5分钟入门C++

0.概述:

  C++发源于面向过程的C,变化如下:
  1. 面向对象内容1:引入STL库,方便数据结构如栈、队列、hashtable的建立、插入、删除以及排序、组合等泛型算法,
  2. 面向对象内容2:引入类的概念,operator可自定义隐藏内部实现的接口函数(不做介绍)
  3. 新增new和free等等函数标准化内存的动态内存分配与销毁
  4. 关于键盘/文件读取,set iostream变量&cin/cout操作
  5. 字符串与数据变量的转化——stoi(),stoa(),atoi()…function

1.顺序容器(vector+封装而来的stack,queue)

  1. vector a;
    1. vector与C中数组类似,元素还可是char,结构体,指针等任意变量
    2. 元素:a.front()=首元素,a.back()=尾元素,a.begin()=首指针,a.end()=尾指针之后,a.size()
    3. 操作:like array,vector只能在尾部插入push_back(element),删除pop_back(element),
      插入,删除可在任意位置,显然要移动其后的一系列元素,复杂度=O(n);
      容器间赋值 ,a.assign(b.begin(),b.begin()+3);
  2. stack尾进尾出,queue尾进头出,push(),pop(),top()

2. 常用泛型算法_变量类型均为迭代器/指针

sort(a,begin(),a.end());//排序
reverse(a.begin(),a.end());//翻转
find_first_of(a.begin(),a.end(),target);//查找

3. 关联容器(map,set)*(unordered(哈希结构–看不懂的红黑树),const)

  1. map[key]=value;所以map的遍历只能用迭代器,
  2. 迭代器遍历输出map严格按照key字典序,unordered_map则不然
  3. map.push(pair=makepair(key,value)/{key,value});pair is a new variable type
  4. map,set用insert(element),erase(key)函数来取代push,pop,因为本身按照哈希映射是无序的

4. 天女散花

  1. 分配动态内存:ListNode* head=new ListNode(value);
  2. 引用 :不是指针,起C语言中指针的作用,还有const &,
    int &b=a;//b与a为同一对象的不同名称,故b改变,a亦改变,
  3. lambda表达式——new自定义运算符:
    sort(list.begin(),list.end(),[](T a,T b,...)->{return function});
    11111111111111111111111111111111111输入值11111111111111输出
  4. 字符串:string a=b+'a';<—组合 string c=b.substr(b.begin(),b.end()-1);<-截取
posted @ 2022-09-22 18:59  clfire  阅读(77)  评论(0编辑  收藏  举报