从C ++ std :: vector中删除第i项
作者:野牛程序员:2023-05-27 20:14:20 C++阅读 3375
要从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

