从C ++ std :: vector中删除第i项
作者:野牛程序员:2023-05-27 20:14:20 C++阅读 3100
要从C++的std::vector
中删除第i
项,可以使用std::vector
的erase
函数。以下是一个示例:
#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