推荐几个学习c++的线上网站、
https://www.runoob.com/cplusplus/cpp-tutorial.html
https://www.w3cschool.cn/cpp/
https://www.php.cn/course/93.html
https://www.yiibai.com/cplusplus/
http://c.biancheng.net/cplus/
1. vector向量c++模板的概念,c++ STL标准模板库是一套功能强大的C++模板,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量、链表、队列、栈。
容器、算法、迭代器
c++ vector使用方法 https://www.w3cschool.cn/cpp/cpp-i6da2pq0.html
vector类常用的函数 https://www.cnblogs.com/zsq1993/p/5929806.html
定义:
vectorv; vector v... 函数
- 基本操作
1 头文件: #include2 创建vector对象: vector v; vector的元素,可以是int,double,string,结构体也可,但是结构体的各类函数需要重新定义。 3 尾部插入元素: v.push_back(a); 指定位置插入元素:v.insert(v.begin()+i,a);新元素的下标是i,从0开始的。 4 使用下表访问元素: cout< ::iterator it; for(it = v.begin();it!=v.end();it++){ cout<<*it<
- 算法
需要补充头文件#include1 升序排序:sort(v.begin(),v.end());升序排序。 降序排列: bool comp1(vector &a,vector &b){ return a>b; } bool comp2(int a,int b){ return a>b; } sort(v.begin(),v.end(),comp1); sort(v.begin(),v.end(),comp2);两者均可。 函数参数是int a,int b,以及Comp函数名 2 元素逆序排列 reverse(v.begin(),v.end()); 3 vector去除重复元素 sort(v.begin(),v.end()); v.erase(unique( v.begin(),v.end()),v.end()); 解释:unique( v.begin(),v.end())将数组中的连续重复元素移到数组最后,并 返回数组中的不重复的最后一个元素的迭代器。 v.erase(it1,it2) 删除迭代器之间的元素。保留后一个,删除前一个 返回的是所有重复元素保留一个,的顺序数组。 如果不先sort一下,则返回连续两数的值不同的数组, v=[1 2 2 3 2 3]; v1=[1 2 3;] v2=[1 2 3 2 3];不先sort .begin() 得到数组头的指针
.end() 得到数组的最后一个单元+1的指针
.front() 得到数组头的引用
.back() 得到数组的最后一个单元的引用reverse_iterator rbegin():反向迭代器,指向最后一个元素 ,哪里用呢,不确定的 reverse_iterator rend():反向迭代器,指向第一个元素之前的位置
- vector对象的定义和初始化
vector2. map/ unordered_map;键值对容器v1; 保存类型为 T 对象。默认构造函数 v1 为空。 vector v2(v1); v2 是 v1 的一个副本。 vector v3(n, i); v3 包含 n 个值为 i 的元素。 vector v4(n); v4 含有值初始化的元素的 n 个副本。 若T为int,则值为n个零元素。理解为初始化的一部分。 需要注意的是,map中的元素是按照key值从小到大排列的,不是value
所以顺序输出是map初始赋值的顺序是不一样的。
https://www.w3cschool.cn/cpp/cpp-fu8l2ppt.htmlunordered_map是无序的哈希表,
两者的基本操纵是一致的。表面上看来,唯一的区别就是map的输出是有序的,而unordered_map是无序的.
但是更深层次,两者的底层实现是不一样的map是红黑树,而unordered_map是哈希表
- 基本操作。
.begin() 返回指向map头部的迭代器。 .end() 返回指向map尾部的迭代器。 mapiimap; iimap["dede1"]=12;iimap["dede2"]=13;iimap["dede3"]=14; 1 头文件: #include



