版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/33732681 特定容器算法 lst.merge(lst2) 将来自lst2的元素并入到lst.这两个都必须是有序的. lst.merge(lst2, comp) 元素将从lst2删除,第一个版本号使用<运算符,第二个版本号使用给定的运算符 lst.remove(lst2)调用erase删除掉与给定值相等(==)或令一元谓词为真的每一个元素…
大多数算法都定义在<algorithm>头文件里,而标准库还在头文件<numeric>里定义了一组数值泛型算法,比如accumulate. ●  find算法,算法接受一对迭代器表示要搜寻的范围,还接受一个给定的值,算法从给定的范围内查找,返回指向第一个等于给定值的元素的迭代器,若没有找到,则返回第二个参数. int val = 5; vector<int> vec = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; auto find_val…
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/35244805 关联容器操作(2) map的下标操作 map的下标操作 map和unordered_map容器提供了下标运算符合一个相应的at函数 对于一个map使用下标操作,其行为与数组或vector上的下标操作非常不同样: 使用一个不再容器中的keyword作为下标.会加入一个此keyword的元素到map中 map和unordered…
概要(泛型算法) 大多数算法的头文件中定义algorithm在. 标准库也是第一个文件numeric它定义了一套通用算法. #include<iostream> #include<numeric> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; for(size_t t=0 ; t != 44 ; ++t) { vec.…
链表类型list和forward_list有独有的sort.merge.remove.reverse和unique,而通用版本的是不能用于这两个类型的,因为所要求的迭代器不同,通用版本需要迭代器支持更多的操作. 除了revrese不需要参数,其他都可以传递一个谓词. splice是链表类型所独有的算法,且没有通用版本. #include<bits/stdc++.h> using namespace std; int main(void) { list<int>n1{ 1,2,3,4…
1) STL的容器通过类模板技术,实现数据类型和容器模型的分离. 2) STL的迭代器技术实现了遍历容器的统一方法:也为STL的算法提供了统一性. 3) STL的函数对象实现了自定义数据类型的算法运算 核心思想:其实函数对象本质就是回调函数,回调函数的思想,就是任务的编写者和任务的调用者有效解耦合,函数指针做函数参数. 4) 具体例子:transform算法的输入,通过迭代器first和last指向的元算作为输入:通过result作为输出:通过函数对象来做自定义数据类型的运算.…
关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,顺序容器则通过元素在容器中的位置顺序存储和访问元素 关联容器类型 map 关联数组:元素通过键来存储和读取 set 大小可变的集合,支持通过键实现的快速读取 multimap 支持同一个键多次出现的 map 类型 multiset 支持同一个键多次出现的 set 类型 pair类型 pair是一种模版类型,在创建pair对象,必须提供两个类型名. 头文件 utility pairs 类型提供的操作 pair<T1, T2>…
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/cutter_point/article/details/32066151 定制操作 向算法传递函数 用 sort 接受第三个參数!! 谓词 bool isShorter(const string &s1, const string &s2) { return s1.size()<s2.size(); } int main() { //按长度由短至长排序words sort(words.…
动态存储类 StrVec Class Design StrVec Class Definition class StrVec { public: //构造函数 StrVec():elements(nullptr), first_free(nullptr), cap(nullptr){} //用initializer_list<string>初始化參数列表 StrVec(initializer_list<string> il):StrVec(il){} //拷贝构造函数 StrVec…
转换和继承,虚函数 Understanding conversions between base and derived classes is essential to understanding how object-oriented programming works in C++. 理解基类和派生类之间的转换是不可缺少的 理解面向对象编程在. Like built-in pointers, the smart pointer classes (§12.1, p. 450) support…