c++vector迭代器:insert模拟实现
作者:野牛程序员:2024-01-03 14:35:48 C++阅读 2341
在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