C++容器list、vector、map、set区别与用法详解
C++容器是C++标准库提供的一些数据结构,包括vector、list、map、set等。这些容器在我们编写代码时,经常会被用到。针对不同的应用场景,我们会选择不同的容器。本文将对C++中常用的四种容器:list、vector、map、set做一个详细介绍,分别介绍其区别和用法。
List
list是C++标准库中的一个双向链表容器,它支持大部分的双向链表操作,包括随机访问、插入和删除等操作。由于它是双向链表,所以插入和删除元素时的效率比vector要高。
创建list容器
#include <list>
std::list<int> myList; //声明一个空的int型list
插入元素
list容器支持在任意位置插入元素,可以使用push_back()
、push_front()
、insert()
等方法插入元素。
#include <list>
#include <iostream>
int main(){
std::list<int> myList;
myList.push_back(1); //尾部插入1
myList.push_back(2); //尾部插入2
myList.push_front(0); //头部插入0
auto it = myList.begin();
it++; //指向1
myList.insert(it, -1); //在1前面插入-1
for(auto i:myList) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:0 -1 1 2
删除元素
可以使用pop_back()
、pop_front()
、erase()
等方法删除元素。
#include <list>
#include <iostream>
int main(){
std::list<int> myList;
myList.push_back(1); //尾部插入1
myList.push_back(2); //尾部插入2
myList.push_front(0); //头部插入0
auto it = myList.begin();
it++; //指向1
myList.erase(it); //删除1
for(auto i:myList) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:0 2
Vector
vector是C++标准库中的一个可变长的数组容器,它在数组元素的访问上具有类似于普通数组的优点,但又可以动态地增减容量,这使得它非常适合于需要高效率的数据存储和使用的场合。
创建vector容器
#include <vector>
std::vector<int> myVector; //声明一个空的int型vector
插入元素
vector容器支持在任意位置插入元素,可以使用push_back()
、push_front()
、insert()
等方法插入元素。
#include <vector>
#include <iostream>
int main(){
std::vector<int> myVector;
myVector.push_back(1); //尾部插入1
myVector.push_back(2); //尾部插入2
myVector.push_front(0); //头部插入0(不支持)
auto it = myVector.begin();
it++; //指向1
myVector.insert(it, -1); //在1前面插入-1
for(auto i:myVector) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:0 -1 1 2
删除元素
可以使用pop_back()
、erase()
等方法删除元素。
#include <vector>
#include <iostream>
int main(){
std::vector<int> myVector;
myVector.push_back(1); //尾部插入1
myVector.push_back(2); //尾部插入2
auto it = myVector.begin();
it++; //指向1
myVector.erase(it); //删除1
for(auto i:myVector) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:1
Map
map是C++标准库中的一个关联数组容器,它可以将任何一种数据类型映射到另一种数据类型,使用一个类似于数组下标的方式进行访问。
创建map容器
#include <map>
std::map<int, std::string> myMap; //声明一个int型到std::string型的map
插入元素
map容器支持键-值插入。
#include <map>
#include <iostream>
int main(){
std::map<int, std::string> myMap;
myMap[0] = "zero"; //插入键0,值为"zero"
myMap.insert(std::make_pair(1, "one")); //插入键1,值为"one"
for(auto i:myMap) //遍历输出
std::cout << i.first << ' ' << i.second << std::endl;
return 0;
}
输出:
0 zero
1 one
删除元素
可以使用erase()
方法删除元素。
#include <map>
#include <iostream>
int main(){
std::map<int, std::string> myMap;
myMap[0] = "zero"; //插入键0,值为"zero"
myMap[1] = "one"; //插入键1,值为"one"
auto it = myMap.find(1); //定位键为1的元素
myMap.erase(it); //删除键为1的元素
for(auto i:myMap) //遍历输出
std::cout << i.first << ' ' << i.second << std::endl;
return 0;
}
输出:
0 zero
Set
set是C++标准库中的一个集合容器,它对集合中的元素进行排序,并且去除重复元素。set中的元素不可以通过下标进行访问。
创建set容器
#include <set>
std::set<int> mySet; //声明一个空的int型set
插入元素
set容器使用insert()
方法插入元素。
#include <set>
#include <iostream>
int main(){
std::set<int> mySet;
mySet.insert(2); //插入2
mySet.insert(1); //插入1
mySet.insert(3); //插入3
mySet.insert(1); //插入重复元素1
for(auto i:mySet) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:1 2 3
删除元素
可以使用erase()
方法删除元素。
#include <set>
#include <iostream>
int main(){
std::set<int> mySet;
mySet.insert(2); //插入2
mySet.insert(1); //插入1
mySet.insert(3); //插入3
mySet.erase(1); //删除1
for(auto i:mySet) //遍历输出
std::cout << i << ' ';
std::cout << std::endl;
return 0;
}
输出:2 3
小结
本文介绍了C++标准库中常用的四种容器:list、vector、map、set。它们分别适用于不同的应用场景,灵活使用可以帮助我们编写高效率的代码。具体实用时根据需求选择容器即可。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++容器list、vector、map、set区别与用法详解 - Python技术站