C++序列与关联容器
2021/10/11 20:14:35
本文主要是介绍C++序列与关联容器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
容器概述
#include <iostream> #include <vector> int main() { std::vector<int> x{1,2,3}; auto b = x.begin(); // auto b = x.rbegin() 反向遍历 auto e = x.end(); //auto e = x.rend() for(auto ptr = b; ptr < e; ++ptr) { std::cout << *ptr <<" "; }
cbegin/cend: c表示const,构造只读的迭代器。
序列容器
array
#include <iostream> #include <array> #include <type_traits> int main() { std::array<int, 3> a; std::cout << std::is_same_v<std::array<int, 3>::value_type, int>; } //输出1
https://en.cppreference.com/w/cpp/container/array
返回1,<int,3>非空返回0
返回元素个数,3
vector
#include <iostream> #include <vector> int main() { std::vector<int> a{1,2,3}; for (auto ptr = a.begin(); ptr != a.end(); ++ptr) { std::cout << *ptr << std::endl; } }
输出
1
2
3
接口具体使用方法参考https://en.cppreference.com/w/cpp/container/vector
list
deque、basic_string
可参照:https://www.cnblogs.com/cthon/p/9181979.html
关联容器
#include <iostream> #include <map> using namespace std; int main() { map<char,int> m{{'a',3}}; cout << m['a'] <<endl;//输出3 }
set
set不能包含重复的元素;左子树和右子树层数最多相差一层
遍历时先遍历左子树-树根-右子树,即从小到大遍历输出
#include <iostream> #include <set> int main() { std::set<int> s{1,2,3};// std::set<int, std::greater<int>> s{1,2,3}; 运行后将从大到小排列 for (auto ptr = s.begin(); ptr != s.end(); ++ptr) { std::cout << *ptr << std::endl; } //std::cout << s.contains(3) << std::endl;数组里包含3,返回1 } //输出2 3 57 100
map
输出:1 1 /3 1 /4 0
或者:
map的插入删除
int main() { std::map<int, bool> m; m.insert(std::pair<const int, bool>(3,true));//插入元素 auto ptr = m.find(3);//查找元素 std::cout << ptr->first << ' ' << ptr->second; std::cout << m[3] << std::endl;//输出1 m.erase(3);//删除元素 }
#include <iostream> #include <set> int main() { std::set<int> s{1,3,1};//输出1 3 //std::multiset<int> s{1,3,1}; 输出1 1 3 即允许重复键 for (auto i : s) { std::cout << i << std::endl; } std::cout << s.count(1) << std::endl;//输出1,若为multiset,则输出2 }
#include <iostream> #include <unordered_set> int main() { std::unordered_set<int> s{3, 1, 5, 4, 1}; for (auto p : s) { std::cout << p << std::endl; } }
输出 4 5 1 3,四个元素打印出来的顺序可能不同。
适配器与生成器
输出2 4。对容器v中每一个元素都调用isEven,判断为true则返回。
#include <iostream> #include <ranges> int main() { for (int i : std::views::iota(1) | std::views::take(9)) std::cout << i << ' '; }
输出:1 2 3 4 5 6 7 8 9
这篇关于C++序列与关联容器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享