赞
踩
#include <unordered_set>
和#include <set>
,其中后者同时包含set和multiset类unordered_set<int> myset;
、set<int> myset;
、multiset<int> myset;
myset.insert(value);
或myset.erase(value);
myset.find(value)
,如果找到了,find会返回指向该元素的迭代器(具体见下面对于迭代器的介绍);如果没找到,会返回一个指向集合的 end() 的迭代器。所以通过if myset.find(value) == myset.end()
可以判断集合中是否有对应元素#include <unordered_map>
和#include <map>
,其中后者同时包含map和multimap类map<string, int> my_map;
,其中string代表key的类型为string,int代表value的类型为intmy_map.insert(make_pair(key, value));
、my_map.insert(pair<int, string> (key, value));
或my_map[key] = value
;其中insert函数在插入时,如果key已经存在,则不会插入(pair的具体内容见下面映射类的遍历);而使用【】进行赋值的方式,如果key已经存在,将会用新的value覆盖原值my_map.find(key)
,如果找到了,find会返回指向该键值对的迭代器(具体见下面对于迭代器的介绍);如果没找到,会返回一个指向映射的 end() 的迭代器。所以通过if my_map.find(key) == myset.end()
可以判断映射中是否有对应键值对pair<int, int> my_pair;
pair的定义类似于容器、集合和映射的定义方式begin()
和end()
成员,分别为指向第一个元素和末尾元素的下一个元素(尾后迭代器)的迭代器;如果容器为空,则begin和end返回同一迭代器*
可以获得迭代器指向的对象内容#include <iostream> #include <vector> using namespace std; int main() { vector<int> myVector = {1, 2, 3, 4, 5}; // 使用迭代器遍历容器 // vector<int>::iterator it 用于创建一个能读取<vector>int 元素的迭代器it,最初指向begin() // ++it表示迭代器的移动 for (vector<int>::iterator it = myVector.begin(); it != myVector.end(); ++it) { cout << *it << " "; // 通过解引用获取迭代器所指的对象 } cout << endl; return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。