C++ 我们可以在向量上使用back()值索引执行insert吗?
最近我遇到了一个场景,我必须使用另一个向量的切片在向量中插入值,然后将其放在后面。我尝试使用vector.back()-value,但它不允许我这样做。下面是代码片段C++ 我们可以在向量上使用back()值索引执行insert吗?,c++,vector,stl,C++,Vector,Stl,最近我遇到了一个场景,我必须使用另一个向量的切片在向量中插入值,然后将其放在后面。我尝试使用vector.back()-value,但它不允许我这样做。下面是代码片段 tempVector.insert(inputs.back()-temp,inputs[loopVar]); 显示的错误是 重载函数“std::vector::insert[with _Ty=int,_Alloc=std::allocator]”的实例与参数列表不匹配 我试着在网上找一些类似的例子,但在这方面找不到太多。有人能告
tempVector.insert(inputs.back()-temp,inputs[loopVar]);
显示的错误是
重载函数“std::vector::insert[with _Ty=int,_Alloc=std::allocator]”的实例与参数列表不匹配
我试着在网上找一些类似的例子,但在这方面找不到太多。有人能告诉我我做错了什么吗?我不熟悉STL和c++14方法
insert
接受迭代器作为第一个参数(例如,请参阅)。要在后面插入元素,可以尝试以下操作:
vec.insert(vec.end(), value);
。。。使用其他向量的切片在向量中插入值,并将其放在后面
解决方案1:
for (auto& x : b)
std::cout << x << ' ';
有一个重载具有以下形式:
template< class InputIt >
void insert( iterator pos, InputIt first, InputIt last);
要测试它:
for (auto& x : b)
std::cout << x << ' ';
用于(自动和x:b)
std::couttempVector.insert(tempVector.end()inputs.end()-temp,inputs.begin()+loopVar)代码>?(假设inputs.end()-tempinsert()
需要在第一个参数中使用迭代器。back()
返回(引用)最后一个元素值,而不是最后一个元素的迭代器。若要获取最后一个元素的迭代器,请改用end()-1
(假设向量
不为空)。然后您可以根据需要从迭代器中减去。
for (auto& x : b)
std::cout << x << ' ';