c++vector迭代器:insert模拟实现
作者:野牛程序员:2024-01-03 14:35:48 C++阅读 2655
在C++中,std::vector 的 insert 函数用于在指定位置插入一个或多个元素。以下是一个简单的模拟实现,使用迭代器来完成插入操作:
#include <iostream>
#include <vector>
template <typename T>
typename std::vector<T>::iterator custom_insert(std::vector<T>& vec, typename std::vector<T>::iterator position, const T& value) {
// 计算插入位置之后的元素个数
size_t elements_after = vec.end() - position;
// 将最后一个元素复制一份,为了保留最后一个元素
vec.push_back(*(vec.end() - 1));
// 从插入位置开始,将后面的元素向后移动一位
for (size_t i = 0; i < elements_after; ++i) {
*(vec.end() - 1 - i) = *(vec.end() - 2 - i);
}
// 在插入位置赋值新元素
*position = value;
// 返回指向插入元素的迭代器
return position;
}
int main() {
std::vector<int> myVector = {1, 2, 3, 4, 5};
std::cout << "Original vector:";
for (const auto& element : myVector) {
std::cout << " " << element;
}
std::cout << std::endl;
// 模拟在位置 2 插入元素 10
auto insertIterator = custom_insert(myVector, myVector.begin() + 2, 10);
std::cout << "Vector after custom insert:";
for (const auto& element : myVector) {
std::cout << " " << element;
}
std::cout << std::endl;
std::cout << "Iterator pointing to inserted element: " << *insertIterator << std::endl;
return 0;
}野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892

