C++ 我们可以在向量上使用back()值索引执行insert吗?

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]”的实例与参数列表不匹配 我试着在网上找一些类似的例子,但在这方面找不到太多。有人能告

最近我遇到了一个场景,我必须使用另一个向量的切片在向量中插入值,然后将其放在后面。我尝试使用vector.back()-value,但它不允许我这样做。下面是代码片段

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::cout
tempVector.insert(tempVector.end()inputs.end()-temp,inputs.begin()+loopVar)?(假设
inputs.end()-temp
insert()
需要在第一个参数中使用迭代器。
back()
返回(引用)最后一个元素值,而不是最后一个元素的迭代器。若要获取最后一个元素的迭代器,请改用
end()-1
(假设
向量
不为空)。然后您可以根据需要从迭代器中减去。
  for (auto& x : b)
    std::cout << x << ' ';