vector删除全部元素
时间: 2023-09-30 16:02:07 浏览: 47
可以使用clear()函数删除vector中的所有元素:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
cout << "Vector before clear: ";
for (auto i : v) {
cout << i << " ";
}
cout << endl;
v.clear();
cout << "Vector after clear: ";
for (auto i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
Vector before clear: 1 2 3 4 5
Vector after clear:
```
可以看到,使用clear()函数将vector中的所有元素都删除了。
相关问题
vector删除重复元素
在C++中,如果你有一个`std::vector`并且想要删除其中的重复元素,可以采用几种方法:
1. **排序 + 判断重复**:
先对vector进行排序(如使用`std::sort`),然后遍历vector,如果当前元素等于下一个元素,就移除下一个元素。这种方法效率较低,因为每次删除都会导致后续元素移动。
```cpp
std::sort(v.begin(), v.end());
v.erase(std::unique(v.begin(), v.end()), v.end());
```
2. **使用set**:
利用`std::set`的特性,它不允许有重复元素,你可以将vector的内容转移到set中,然后再复制回vector,这会自动去除重复。
```cpp
std::set<int> s(v.begin(), v.end());
v.clear();
v.insert(s.begin(), s.end());
```
3. **自定义算法**:
使用`std::remove_if`和`std::unique`,配合迭代器,可以保留第一次出现的元素并删除其余重复的。
```cpp
auto it = std::unique(v.begin(), v.end());
v.resize(std::distance(v.begin(), it));
```
请注意,以上方法都改变了原vector的顺序,如果你想保持原有的插入顺序,那么在第二种方法中,可以用`unordered_set`代替`set`,因为`unordered_set`不会保持插入顺序,但查找速度更快。
c++ vector删除头元素
在C++中,`std::vector`是一个动态数组,它提供了在运行时添加、删除元素的功能。如果你想删除头元素(即第一个元素),有两种常用的方式:
1. **直接调用pop_back()**:
如果你想保留向量的容量并移除最后一个元素,可以使用`pop_back()`函数。这个操作会将所有后续元素向前移动一位,并不会影响头元素。如果你想直接删除头元素,你应该先检查向量是否为空。
```cpp
if (!vector.empty()) {
vector.pop_back(); // 删除最后一个元素
}
```
2. **使用erase()和begin()方法**:
如果你需要更通用的方法来删除任意位置的元素,可以使用`erase()`函数结合`begin()`迭代器来指定首元素。对于删除头元素,你可以这样做:
```cpp
vector.erase(vector.begin()); // 删除第一个元素(等价于 pop_front())
```
请注意,这两种方法都不会改变向量的大小,只是改变了内部元素的排列。如果你需要减少向量的大小,可以同时调用`resize()`方法。