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

从C ++ std :: vector中删除第i项

作者:野牛程序员:2023-05-27 20:14:20 C++阅读 3100

要从C++的std::vector中删除第i项,可以使用std::vectorerase函数。以下是一个示例:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector = {1, 2, 3, 4, 5};

    int indexToRemove = 2; // 要删除的项的索引,这里假设为2

    if (indexToRemove >= 0 && indexToRemove < myVector.size()) {
        myVector.erase(myVector.begin() + indexToRemove);
        std::cout << "删除后的向量: ";
        for (int element : myVector) {
            std::cout << element << " ";
        }
        std::cout << std::endl;
    } else {
        std::cout << "无效的索引" << std::endl;
    }

    return 0;
}

在上述示例中,我们有一个std::vector称为myVector,其中包含一些整数。我们要删除索引为2的项(即第三个项)。如果索引有效,则使用erase函数删除该项。最后,我们打印删除后的向量。

请注意,为了确保索引有效,我们在删除之前检查了indexToRemove的范围。myVector.begin() + indexToRemove计算要删除的项的迭代器。


在C++98中,您可以使用以下方法从std::vector中删除第i项:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> myVector;
    myVector.push_back(1);
    myVector.push_back(2);
    myVector.push_back(3);
    myVector.push_back(4);
    myVector.push_back(5);

    int indexToRemove = 2; // 要删除的项的索引,这里假设为2

    if (indexToRemove >= 0 && indexToRemove < myVector.size()) {
        myVector.erase(myVector.begin() + indexToRemove);
        std::cout << "删除后的向量: ";
        for (std::vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) {
            std::cout << *it << " ";
        }
        std::cout << std::endl;
    } else {
        std::cout << "无效的索引" << std::endl;
    }

    return 0;
}

在上述示例中,我们使用C++98中的语法创建了一个std::vector,并将一些整数添加到其中。然后,我们删除索引为2的项(即第三个项)。删除后,我们使用迭代器遍历并打印剩余的向量元素。

请注意,C++98中没有范围基于for循环,因此我们必须使用迭代器来遍历std::vector的元素。myVector.begin()返回指向第一个元素的迭代器,然后通过+运算符和indexToRemove计算要删除的项的迭代器。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击