您可以使用erase
删除特定迭代器位置处的元素,使用insert
在特定迭代器位置之前插入元素。要步进迭代器,请使用std::next
和std::prev
。
#include <iostream>
#include <iterator>
#include <vector>
int main() {
std::vector<int> vecta{10, 20, 30, 40, 50};
std::vector<int> vectb{1000, 2000, 3000};
vecta.erase(std::next(vecta.begin(), 2));
vecta.insert(std::next(vecta.begin(), 2), vectb.begin(), vectb.end());
for(int v : vecta) {
std::cout << v << ' ';
}
std::cout << '\n';
}
输出:
10 20 1000 2000 3000 40 50
一种不需要使用
erase
的替代方法。这可能稍微更快一些:
#include <utility>
int main() {
std::vector<int> vecta{10, 20, 30, 40, 50};
std::vector<int> vectb{1000, 2000, 3000};
std::vector<int> result;
result.reserve(vecta.size() - 1 + vectb.size());
result.insert(result.end(), vecta.begin(), std::next(vecta.begin(), 2));
result.insert(result.end(), vectb.begin(), vectb.end());
result.insert(result.end(), std::prev(vecta.end(), 2), vecta.end());
std::swap(result, vecta);
}