【发布时间】:2018-01-08 20:56:00
【问题描述】:
我有以下代码:
typedef unsigned long int U64;
std::vector<U64> vectorA;
std::vector<U64> vectorB;
vectorA.insert(vectorA.end(), vectorB.begin(), vectorB.end());
最后一行出现编译错误,找不到方法。
它需要以下签名(代码来自 stl_vector.h):
template<typename _InputIterator,
typename = std::_RequireInputIter<_InputIterator>>
iterator
insert(const_iterator __position, _InputIterator __first,
_InputIterator __last)
如何获取向量类实例的 _InputIterator / _RequireInputIter 实例? 我可以用不同的方法做同样的事情吗?
我正在使用 gcc:
gcc 版本 7.0.1 20170407(实验性)[主干修订版 246759] (Ubuntu 7-20170407-0ubuntu2)
和 Ubuntu:
NAME="Ubuntu" VERSION="17.04 (Zesty Zapus)"
编辑:
我收到编译错误:
Invalid arguments ' Candidates are:
__gnu_cxx::__normal_iterator<int *,std::vector<int,std::allocator<int>>> insert(__gnu_cxx::__normal_iterator<const int
*,std::vector<int,std::allocator<int>>>, const int &)
__gnu_cxx::__normal_iterator<int *,std::vector<int,std::allocator<int>>> insert(__gnu_cxx::__normal_iterator<const int
*,std::vector<int,std::allocator<int>>>, int &&)
__gnu_cxx::__normal_iterator<int *,std::vector<int,std::allocator<int>>> insert(__gnu_cxx::__normal_iterator<const int
*,std::vector<int,std::allocator<int>>>, std::initializer_list<int>)
__gnu_cxx::__normal_iterator<int *,std::vector<int,std::allocator<int>>> insert
【问题讨论】:
-
minimal reproducible example,拜托。这应该像书面的那样工作。
-
U64是什么,您遇到了什么错误? -
vector::begin() 和 end() 是输入迭代器。
-
除了 typedef,您的代码中与我链接的 minimal reproducible example 有什么不同?不管是什么,请把你的minimal reproducible example 放在一起,重复这个问题。
-
非常感谢您的帮助,我的代码也出现了同样的编译错误。我将尝试提供有关我的项目/编译器设置的更多信息。