vector 头部删除 后加入, 使 vector
时间: 2024-10-11 19:11:20 浏览: 18
在C++中,如果你想从头部删除元素后立即添加新元素到向量(vector)的头部,通常有两种方法:
1. **直接插入**:删除元素后,可以直接使用`push_front()`方法将新元素添加到向量的开始。不过请注意,这并不是原地操作,因为`push_front`会动态分配内存。
```cpp
std::vector<int> vec = {2, 3, 4};
vec.erase(vec.begin()); // 删除首元素
// 添加新元素
vec.push_front(1); // 这不是原地操作,需要额外内存空间
for (auto i : vec) {
std::cout << i << ' ';
}
```
2. **先移动再插入**:如果你希望保持原地操作,可以在删除元素后,用`front()`获取当前头部元素,然后更新指向第二个元素的新引用,最后再添加新元素。这样做不需要额外分配内存。
```cpp
std::vector<int> vec = {2, 3, 4};
vec.erase(vec.begin());
// 先移动
int firstElement = vec.front();
vec.erase(vec.begin()); // 移除第二个元素
// 添加新元素
vec.insert(vec.begin(), 1); // 插入新元素到头部
vec[0] = firstElement; // 将之前移出的元素放回原位置
for (auto i : vec) {
std::cout << i << ' ';
}
```
这两种方法都会改变向量的尺寸,因为它们都涉及到了元素的移动或复制。
阅读全文