c语言用键盘赋值(在c++中使用键值对)

起因

看起LeetCode算法,便尝试用C++做一些简单的算法题.一直没接触到C++的键值对集合. 在C++键值对集合分为顺序和无序的.

在C++中的键值对集合.分为顺序和无序的,有set和map

使用set

int main(int argc, char *argv[]) { //使用set 需要引入set头文件 set<int> set1; //方式1 定义并初始化一个set set<int> set2{1, 2, 3}; //方式而 初始有值的set集合 int arr[] = {3, 2, 4}; set<int> set3(arr, arr + sizeof(arr) / sizeof(int)); //在set添加元素set3.联通大流量卡insert(1); //遍历set for (set<int>::iterator iter = set3.begin(); iter != set3.end(); iter++) { cout << *iter << ” “; } cout << endl; //简历遍历元素的方式 for (auto item : set3) { cout << item << ” “; } cout << endl; //移除元素 set3.erase(1); cin.get(); return 0; }

在调试的时候,发现在set初始化之后,值已经变为顺序的

使用map

int main(int argc, char *argv[]) { /联通大流量卡/使用map需要引入map头文件 map<int, int> map1; vector<int> vec1{3, 2, 4}; for (int i = 0; i < vec1.size(); ++i) { map1[vec1[i]] = 0; //根据key 修改值 } //通过insert插入key和value, 通过insert会判断key是否存在,如果存在会报错 map1.insert(pair<int, int>(6, 0)); map1.insert(make_pair<int, int>(10, 0)); //根据迭代器遍历元素key 和 value for (map<int, int>::iterator联通大流量卡 iter = map1.begin(); iter != map1.end(); iter++) {cout << “key: “ << iter->first << ” value:” << iter->second << endl; } //简化遍历元素的方式 for (auto item : map1) { cout << “key: “ << item.first << ” value:” << item.second << endl; } //删除元素 map1.erase(6); //删除key为6的元素 cin.get(); return 0; }

查看map,在内存中存储是按顺序存储的

在删除元素中,联通大流量卡再次查看元素的顺序.

查看map,在删除元素为6的之后的,元素存储顺序

使用unordered_set

int main(int argc, char *argv[]) { vector<int> vec1{3, 2, 4}; //使用unordered_set需要引入unordered_set头文件 unordered_set<int> set1; unordered_set<int> set2{3,2,1,10,6,5,4}; unordered_set<int> set3; for (int i = 0; i < vec1.size(); ++i) { set3.insert(vec1[i]); //循环插入元素 } //联通大流量卡根据迭代器遍历元素key 和 value for (unordered_set<int>::iterator iter = set3.begin();iter!=set3.end();iter++) { cout << *iter << ” “; } cout<<endl; //简化遍历元素的方式 for (auto item : set3) { cout << item << ” “; } cout<<endl; //删除元素 set3.erase(6); //删除key为6的元素 cin.get(); return 0; }

unorder_set和set区别是无序存储的

使用unordered_map

int联通大流量卡 main(int argc, char *argv[]) { vector<int> vec1{3, 2, 4}; //使用unordered_map需要引入unordered_map头文件 unordered_map<int, int> map1; unordered_map<int, int> map2; for (int i = 0; i < vec1.size(); ++i) { map1.insert(pair<int, int>(vec1[i], 0)); } //根据迭代器遍历元素key 和 value for (unordered_map<int, int>::iterator iter = map1.b联通大流量卡egin(); iter != map1.end(); iter++) {cout << “key:” << iter->first << ” value:” << iter->second << ” “; } cout << endl; //简化遍历元素的方式 for (auto item : map1) { cout << “key:” << item.first << ” value:” << item.second << ” “; } cout << endl; //删除元素 map1.erase(2); //删除key为6的元素 cin.get(); return 0; }

unorder_map在内部存储也是无序的,联通大流量卡通过hash值进行存储的

总结

在C++的容器中添加元素和删除元素分别是insert和erase,一直以来都没在c++上花过精力去学习,在使用了容器,发现C++是可以很现代的.尤其是在使用C++ 新版本(c++11 c++17),使用一些新的语法简化是可以很大程度上提高工作效率的.

学习C++的初衷,只是为了学习.Net CLR源码,一直也没有持续和系统学习.

如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流


友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2

原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/59503.html

(0)
sunyaqunsunyaqun
上一篇 2024年7月26日
下一篇 2024年7月26日

相关推荐

发表回复

登录后才能评论