上海建设工程施工许可证查询网站6,自动化产品的网站建设,wordpress新人必看,世界工厂采购网登录cpp中常见的容器类有vector、list、deque、map、set、unordered_map和unordered_set。
下面将举例直接说明各个容器的使用方法。 文章目录综合示例1. vector#xff1a;动态数组#xff0c;支持随机访问2. list#xff1a;双向链表#xff0c;支持双向遍历和插入删除3. de…cpp中常见的容器类有vector、list、deque、map、set、unordered_map和unordered_set。
下面将举例直接说明各个容器的使用方法。 文章目录综合示例1. vector动态数组支持随机访问2. list双向链表支持双向遍历和插入删除3. deque双端队列支持首尾插入删除和随机访问4. map红黑树实现的关联数组支持按键访问和遍历5. set红黑树实现的集合支持按值访问和遍历6. unordered_map哈希表实现的关联数组支持按键访问和遍历7. unordered_set哈希表实现的集合支持按值访问和遍历检索方法示例1. vector根据下标检索2. deque根据下标检索3. set根据值检索4. map根据值检索5. unordered_set根据值检索6. unordered_map根据值检索综合示例
1. vector动态数组支持随机访问
#include iostream
#include vectorusing namespace std;int main()
{vectorint v;// 添加元素v.push_back(1);v.push_back(2);v.push_back(3);// 遍历元素for (auto it v.begin(); it ! v.end(); it){cout *it ;}cout endl;// 访问元素cout v[0] endl;cout v.at(1) endl;// 删除元素v.erase(v.begin() 1);// 大小和容量cout v.size() endl;cout v.capacity() endl;return 0;
}2. list双向链表支持双向遍历和插入删除
#include iostream
#include listusing namespace std;int main()
{listint l;// 添加元素l.push_back(1);l.push_back(2);l.push_back(3);l.push_front(0);// 遍历元素for (auto it l.begin(); it ! l.end(); it){cout *it ;}cout endl;// 访问元素cout l.front() endl;cout l.back() endl;// 删除元素l.pop_front();// 大小cout l.size() endl;return 0;
}3. deque双端队列支持首尾插入删除和随机访问
#include iostream
#include dequeusing namespace std;int main()
{dequeint d;// 添加元素d.push_back(1);d.push_front(0);d.push_back(2);// 遍历元素for (auto it d.begin(); it ! d.end(); it){cout *it ;}cout endl;// 访问元素cout d[0] endl;cout d.at(1) endl;// 删除元素d.pop_front();// 大小cout d.size() endl;return 0;
}4. map红黑树实现的关联数组支持按键访问和遍历
#include iostream
#include mapusing namespace std;int main()
{mapstring, int m;// 添加元素m[apple] 1;m[banana] 2;m.insert(make_pair(orange, 3));// 遍历元素for (auto it m.begin(); it ! m.end(); it){cout it-first it-second endl;}// 访问元素cout m[apple] endl;// 删除元素m.erase(banana);// 大小cout m.size() endl;return 0;
}5. set红黑树实现的集合支持按值访问和遍历
#include iostream
#include setusing namespace std;int main()
{setint s;// 添加元素s.insert(1);s.insert(2);s.insert(3);// 遍历元素for (auto it s.begin(); it ! s.end(); it){cout *it ;}cout endl;// 访问元素auto it s.find(2);if (it ! s.end()){cout *it endl;}// 删除元素s.erase(3);// 大小cout s.size() endl;return 0;
}6. unordered_map哈希表实现的关联数组支持按键访问和遍历
#include iostream
#include unordered_mapusing namespace std;int main()
{unordered_mapstring, int um;// 添加元素um[apple] 1;um[banana] 2;um.insert(make_pair(orange, 3));// 遍历元素for (auto it um.begin(); it ! um.end(); it){cout it-first it-second endl;}// 访问元素auto it um.find(apple);if (it ! um.end()){cout it-second endl;}// 删除元素um.erase(banana);// 大小cout um.size() endl;return 0;
}7. unordered_set哈希表实现的集合支持按值访问和遍历
#include iostream
#include unordered_setusing namespace std;int main()
{unordered_setint us;// 添加元素us.insert(1);us.insert(2);us.insert(3);// 遍历元素for (auto it us.begin(); it ! us.end(); it){cout *it ;}cout endl;// 访问元素auto it us.find(2);if (it ! us.end()){cout *it endl;}// 删除元素us.erase(3);// 大小cout us.size() endl;return 0;
}检索方法示例
根据下标检索的容器类有vector、deque根据值检索的容器类有set、map、unordered_set、unordered_map
感觉主要靠容器.find()方法、容器.count()方法或者还可以用algorithm库里面的find
1. vector根据下标检索
#include iostream
#include vectorusing namespace std;int main()
{vectorint v {1, 2, 3};// 访问元素cout v[0] endl;cout v.at(1) endl;// 判断元素是否在容器内if (v.size() 0 v[0] 1){cout 1 is in the vector. endl;}return 0;
}2. deque根据下标检索
#include iostream
#include dequeusing namespace std;int main()
{dequeint d {1, 2, 3};// 访问元素cout d[0] endl;cout d.at(1) endl;// 判断元素是否在容器内if (d.size() 0 d[0] 1){cout 1 is in the deque. endl;}return 0;
}3. set根据值检索
#include iostream
#include setusing namespace std;int main()
{setint s {1, 2, 3};// 查找元素auto it s.find(2);if (it ! s.end()){cout *it is in the set. endl;}// 判断元素是否在容器内if (s.count(1) 0){cout 1 is in the set. endl;}return 0;
}4. map根据值检索
#include iostream
#include mapusing namespace std;int main()
{mapstring, int m {{apple, 1}, {banana, 2}, {orange, 3}};// 查找元素auto it m.find(banana);if (it ! m.end()){cout it-second is in the map. endl;}// 判断元素是否在容器内if (m.count(apple) 0){cout apple is in the map. endl;}return 0;
}5. unordered_set根据值检索
#include iostream
#include unordered_setusing namespace std;int main()
{unordered_setint us {1, 2, 3};// 查找元素auto it us.find(2);if (it ! us.end()){cout *it is in the unordered_set. endl;}// 判断元素是否在容器内if (us.count(1) 0){cout 1 is in the unordered_set. endl;}return 0;
}6. unordered_map根据值检索
#include iostream
#include unordered_mapusing namespace std;int main()
{unordered_mapstring, int um {{apple, 1}, {banana, 2}, {orange, 3}};// 查找元素auto it um.find(banana);if (it ! um.end()){cout it-second is in the unordered_map. endl;}// 判断元素是否在容器内if (um.count(apple) 0){cout apple is in the unordered_map. endl;}return 0;
}