当前位置:首页 C++ > 正文

c++vector迭代器:insert模拟实现

作者:野牛程序员:2024-01-03 14:35:48 C++阅读 2341

在C++中,std::vectorinsert 函数用于在指定位置插入一个或多个元素。以下是一个简单的模拟实现,使用迭代器来完成插入操作:

#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
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击