gpt4 book ai didi

c++ - 在同一对象内插入 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:07 25 4
gpt4 key购买 nike

我试图将 vector 中的几个值插入到同一个 vector 对象中,但它似乎出错了:

#include<iostream>
#include<vector>

using namespace std;

int main()
{
vector<int> vec;
for(int i=0;i<9;i++)
{
vec.push_back(i+1);
}

vec.insert(vec.begin(),vec.begin()+2,vec.end()-4); //PROBLEM
vector<int>::iterator ivec=vec.begin();
while(ivec!=vec.end())
{
cout<<*ivec<<' ';
++ivec;
}
cout<<endl;
return 0;
}

我期望从 vec.begin()+23 到元素 vec.end()-4 即 < strong>6 插入 vector 中。但是输出是:

3 1 2 1 2 3 4 5 6 7 8 9

编译器是 g++ 4.1.2。我哪里错了?

最佳答案

问题在于,当您开始插入元素时,您会使指向该 vector 的任何现有迭代器失效,包括指定您尝试插入的范围的迭代器。简单的解决方案是先复制要插入的 vector 的切片。

 vector<int> tmp(vec.begin() + 2, vec.end() - 4);
vec.insert(vec.begin(), tmp.begin(), tmp.end());

关于c++ - 在同一对象内插入 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56629370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com