📅  最后修改于: 2023-12-03 14:49:22.716000             🧑  作者: Mango
C++中的向量是一种动态数组,它可以自动调整大小以适应新增或删除的元素。如果你想从向量中按索引删除一个元素,以下是一些方法供你参考。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 2; // 要删除的元素的索引
vec.erase(vec.begin() + index);
// 或者,你可以使用下面这个以vector.end()为参数的形式
// vec.erase(vec.end() - index - 1);
// 打印删除元素后的向量
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
通过使用erase函数,你可以传递一个迭代器来指定要删除的元素的位置。在这个例子中,我们使用vec.begin() + index
来获取指向要删除元素的迭代器,并使用erase函数来删除该元素。请注意,这里的index
是从0开始计数的。
这是一种常用的删除元素的惯用法。它使用了利用remove函数将要删除的元素移动到末尾,并使用erase函数从向量中删除所有位于末尾的元素的技巧。
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 2; // 要删除的元素的索引
vec.erase(std::remove(vec.begin(), vec.end(), vec[index]), vec.end());
// 打印删除元素后的向量
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在这个例子中,我们首先通过vec[index]
获取要删除的元素,然后使用remove函数将所有与该元素相等的元素移动到向量的末尾。最后,我们使用erase函数从末尾开始删除所有被移动到末尾的元素。
这种方法通过与最后一个元素交换要删除的元素,然后使用pop_back函数从向量中删除最后一个元素来实现删除操作。
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
int index = 2; // 要删除的元素的索引
std::swap(vec[index], vec.back());
vec.pop_back();
// 打印删除元素后的向量
for (int num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在这个例子中,我们首先使用swap函数将要删除的元素与向量的最后一个元素进行交换。然后,我们使用pop_back函数从向量中删除最后一个元素,从而实现删除操作。
以上是从C++向量中按索引删除元素的三种常用方法。根据你的需求和代码的复杂性,你可以选择最适合你的方法来删除元素。