您的位置:首页 > 编程语言 > C语言/C++

C++primer学习笔记(四)

2021-03-01 22:16 846 查看
  • 容器操作函数find(begin, end, val) 返回值是迭代器,没找到返回end。
  • 容器类型和元素类型都相同,可以用赋值vec1=vec2。容器类型不同或元素类型不同,但是兼容可以用assign函数来赋值。
  • vector容器中的元素以连续的方式存放【动态数组】。有预先分配策略,需要重新分配时加倍当前容量。capacity函数获取目前能够存储的元素总数,reserve函数设置capacity。
  • string中的字符也是连续存储的,也有迭代器string::iterator。string类将string::npos定义为保证大于任何有效下标的值。
  • 本质上,适配器是使一事物的行为类似于另一事物的行为的一种机制。stack  queue priority_queue
  • pair类型:pair<T1, T2> p1;p1.first p1.second 。makepair函数可以创建pair对象。vector<pair<int, int> >如果需要多个pair可以放在一个vector中。
  • set中元素不重复,相当于只有键没有值。map的函数大部分都有对应的。
  • 关联容器:容器元素根据键的次序排列。
  • map可以理解为关联数组,键就是下标。
  • map可以用迭代器遍历,按键排序。使用map的insert函数可以避免使用下标操作的副作用:不必要的初始化【如果key已经在map中则map保持不变,避免了初始化】
  • 带有pair形参的insert版本返回一个迭代器和一个bool值的pair对象。map.count(k)返回k出现的次数。map.find(k)若k存在返回迭代器。map的erase返回void。
  • multimap相同键对应的元素必定相邻存放。multimap.lower_bound(k)指向键不小于k的第一个元素,upper_bound(k)。equal_range(k)返回pair代表上下限。
  • 泛型算法:find函数基于迭代器,不同容器可使用相同find。算法从不添加和删除容器元素。it=find_first_of(it,...)可用于多种容器。
  • accumulate(..)累加  fill写入元素  back_insert插入迭代器能达到push_back的效果  copy replace_copy sort unique count_if 谓词是检测函数。
  • 流迭代器:访问特定类型的输入  istream_iterator<int> cin_it(cin)   反向迭代器:reverse_iterator
  • const_iterator用于指定范围的迭代器必要类型一致。容器返回的迭代器是否const取决于容器元素是否const。
  • map set list提供的是双向迭代器。string vector deque提供的是随机访问迭代器【sort函数需要随机迭代器】。istream_iterator是输入迭代器,ostream_iterator是输出迭代器。
  • 对于list对象应该优先使用list容器特有的成员版本【能添加删除元素】,而不是泛型算法。


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: