2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C++ STL 容器的一些总结 --- set(multiset)和map(multimap)

C++ STL 容器的一些总结 --- set(multiset)和map(multimap)

时间:2023-02-13 23:42:42

相关推荐

C++ STL 容器的一些总结 --- set(multiset)和map(multimap)

1 set和multiset

1.1 插入元素方式

set只能用insert插入数据. insert返回值是一个pair<iterator, bool>, 即插入数据的迭代器以及是否插入成功, multiset返回的只有迭代器, 因为不会插入失败.

1.2 删除

set只能用erase, 可以传迭代器或者是值.

1.3 注意事项

不允许resize()可以用swap()

1.4 find和count

find返回容器中值为参数的元素的迭代器, 如果没找到, 会返回容器的end;

count会返回容器中值为参数的元素的个数, 只能为0或者1;

1.5 修改set容器排序规则

如下测试代码:

struct moreCompare {bool operator()(int first, int second) {return first > second;}};void modifySetOrderRulesTest() {set<int, moreCompare> tSet;int array[] = {7,5,2,9,8,4,0,1,3,6};TestUtils::getInstance()->getSetOrMultisetByArr(tSet, PARAM_ARRAY(array));TestUtils::getInstance()->showContainerElements<set<int>::iterator>(tSet);}

结果是:

如果想要修改set(multiset)/map(multimap), 只能在 初始化容器的过程中, 尖括号中传入排序规则, 且这个排序规则只能传入重载了括号运算符的结构体或者类.

2 map与multimap

2.1 通过key值插入

如以下例子:

void mapInsertTest() {map<int, string> mMap;mMap.insert({0, "a"});mMap.insert({1, "b"});mMap.insert({2, "c"});TestUtils::getInstance()->showMapOrMultimapElements<map<int, string>::iterator>(mMap);mMap[8] = "ok";TestUtils::getInstance()->showMapOrMultimapElements<map<int, string>::iterator>(mMap);cout << "mMap[10] = "<< mMap[10] << endl;}

结果如下:

也就是说当用map[键值](键值此时不存在)访问value时, 会插入一个对应键值的pair, value值为空, 或者是0;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。