1.unordered_map
无序映射是关联容器,用于存储由键值和映射值组合而成的元素,并允许基于键快速检索各个元素。
在unordered_map中,键值通常用于唯一标识元素,而映射值是与该关联的内容的对象,键和映射值的内容可能不同。
在内部,unordered_map中的元素没有按照他们的键值或映射值的任何顺序排序,而是根据他们的散列值组织成桶以允许通过他们的键值直接快速访问单个元素(具有常数平均复杂度)。
unordered_map容器比映射容器更快的通过它们的键来访问各个元素,尽管它们通过它们元素的子集 进行范围迭代的效率 通常较低。
无序映射实现 直接访问操作符(operator[]),该操作符允许使用其键值作为参数直接访问映射值。
容器中的迭代器至少是前项迭代器。
unordered_map容器的迭代器指向value_type的元素,因此,对于一个称为它的迭代器来说,它指向映射的一个元素,他的键和映射值可以分别用下面的方法访问:
unordered_map<Key,T>::iterator it; (*it).first; // the key value (of type Key) (*it).second; // the mapped value (of type T) (*it); // the "element value" (of type pair<const Key,T>)
map和unordered_map的比较:
map:
优点:
有序性,这是map的最大优点,其元素的有序性在很多应用中会简化很多操作。
map底层是以红黑树的数据结构实现的,支持的搜索,删除,插入都是
O(log n)的时间复杂度。
缺点:
空间占用率高,因为map内部实现了红黑树,虽然提高了运行效率,但是因为每一个节点都需要额外保存父节点,孩子节点和红黑性质,使得每一个节点都占用大量空间。
unordered_map:
优点:因为内部实现了哈希表,因此查找的速度非常快。
缺点:哈希表的建立比较耗时。
适用处:对于查找问题,unordered_map会更高效一些。
该链接讲的比较详细
2.c++中的istringstream 的用法
istringstream是一个比较有用的c++输入输出控制类。
c++引用了ostringstream,istringstream,stringstream三个类,要使用他们创建对象必须要包含<sstream>这个头文件。
istringstream用于执行c++风格的串流的输入操作,
ostringstream用于执行c风格的串流的输出操作,
stringstream用于执行c风格的串流的输入输出操作,
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。
1 #include<iostream> 2 #include<sstream> //istringstream 必须包含这个头文件 3 #include<string> 4 using namespace std; 5 int main(){ 6 string str="i an a boy"; 7 istringstream is(str); 8 string s; 9 while(is>>s) 10 cout<<s<<endl; 11 } 12 输出是: 13 i 14 am 15 a 16 boy
原文链接: https://www.cnblogs.com/jiaxinli/p/13330582.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/367478
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!