📅  最后修改于: 2023-12-03 15:13:45.069000             🧑  作者: Mango
在C++中,我们可以使用容器(Containers)来存储和管理数据。容器是一种数据结构,可以存储不同类型的数据并提供简单的访问方式。在使用容器时,我们可能需要添加(新增)或删除元素。在本次介绍中,我们将讨论如何在C++中添加和删除元素。
我们可以使用push_back()
方法在容器末尾添加元素。对于vector
和deque
容器,这个方法很快,因为它们实现了连续分配的内存,因此在末尾添加元素只需要分配更多的内存并将元素复制到新的空间中。但对于list
和set
容器,这个操作比较慢,因为它们不使用连续内存存储元素,而是使用指针来链接它们。
下面的代码片段展示了如何在vector
和list
容器中使用push_back()
方法添加元素:
#include <iostream>
#include <vector>
#include <list>
int main() {
// 添加元素到vector
std::vector<int> vector {1, 2, 3};
vector.push_back(4);
for(int i : vector) {
std::cout << i << " ";
}
std::cout << std::endl;
// 添加元素到list
std::list<int> list {1, 2, 3};
list.push_back(4);
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
1 2 3 4
1 2 3 4
如果要在容器的开头添加元素,可以使用push_front()
方法。但是,只有deque
和list
容器支持该方法,因为它们实现了可在头部添加元素的快速访问。
下面的代码片段展示了如何在deque
和list
容器中使用push_front()
方法添加元素:
#include <iostream>
#include <deque>
#include <list>
int main() {
// 添加元素到deque
std::deque<int> deque {1, 2, 3};
deque.push_front(0);
for(int i : deque) {
std::cout << i << " ";
}
std::cout << std::endl;
// 添加元素到list
std::list<int> list {1, 2, 3};
list.push_front(0);
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
0 1 2 3
0 1 2 3
如果要在容器的中间插入元素,则可以使用insert()
方法。该方法需要两个参数:插入位置的迭代器和要插入的元素。
下面的代码片段展示了如何在vector
和list
容器中使用insert()
方法插入元素:
#include <iostream>
#include <vector>
#include <list>
int main() {
// 向vector中插入元素
std::vector<int> vector {1, 2, 3};
auto it = vector.begin() + 1;
vector.insert(it, 4);
for(int i : vector) {
std::cout << i << " ";
}
std::cout << std::endl;
// 向list中插入元素
std::list<int> list {1, 2, 3};
auto it2 = list.begin();
list.insert(it2, 4);
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
1 4 2 3
4 1 2 3
要删除容器的末尾元素,可以使用pop_back()
方法。该方法会将容器的大小减小一个元素,并且可以访问要删除的元素。
下面的代码片段展示了如何在vector
和list
容器中使用pop_back()
方法删除元素:
#include <iostream>
#include <vector>
#include <list>
int main() {
// 删除vector的末尾元素
std::vector<int> vector {1, 2, 3};
vector.pop_back();
for(int i : vector) {
std::cout << i << " ";
}
std::cout << std::endl;
// 删除list的末尾元素
std::list<int> list {1, 2, 3};
list.pop_back();
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
1 2
1 2
如果要删除容器的开头元素,则可以使用pop_front()
方法。但是,只有deque
和list
容器支持该方法,因为它们实现了可在头部删除元素的快速访问。
下面的代码片段展示了如何在deque
和list
容器中使用pop_front()
方法删除元素:
#include <iostream>
#include <deque>
#include <list>
int main() {
// 删除deque的开头元素
std::deque<int> deque {1, 2, 3};
deque.pop_front();
for(int i : deque) {
std::cout << i << " ";
}
std::cout << std::endl;
// 删除list的开头元素
std::list<int> list {1, 2, 3};
list.pop_front();
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
2 3
2 3
要删除容器中的中间元素,可以使用erase()
方法。该方法需要一个参数:要删除的元素的位置(迭代器)。
下面的代码片段展示了如何在vector
和list
容器中使用erase()
方法删除元素:
#include <iostream>
#include <vector>
#include <list>
int main() {
// 从vector中删除元素
std::vector<int> vector {1, 2, 3};
auto it = vector.begin() + 1;
vector.erase(it);
for(int i : vector) {
std::cout << i << " ";
}
std::cout << std::endl;
// 从list中删除元素
std::list<int> list {1, 2, 3};
auto it2 = list.begin();
list.erase(it2);
for(int i : list) {
std::cout << i << " ";
}
std::cout << std::endl;
return 0;
}
输出:
1 3
2 3
以上便是在C++中如何新增和删除元素的操作介绍,希望对你有所帮助。