1.二叉平衡树:左子树和右子树的深度差小于等于1

2.二叉搜索树:左子树小于根节点的值,右子树大于根结点的值

3.队列:push(),pop(),front(),back(),empty(),size()

4.vecotr: clear(),push_back(),pop_back()

二维vector初始化:vector<vector<int> > result(m,vector<int>(n)) 只初始化大小

             vector<vector<int> > result(m,vector<int>(n,0)) 初始化大小,也初始化vector中的值,都初始化为0

              result(m,n)是m个大小都初始化为n的值,result(m,vector<int>(n))才是大小为(m,n)

5.栈:push(),pop(),top(),size(),empty()

6.0x80000000,0x7FFFFFFF

7.multiset实现大根堆(底层用红黑树实现),multiset用迭代器访问:

multiset<int,greater<int>>::iterator greaternumber

greaternumber = container.begin()

greaternumber != container.end();greaternumber++

container.erase(*greaternumber)

container.insert(*iter)

multiset<int,greater<int>> 最大的数在begin的位置

multiset<int,less<int>> 最小的数在begin的位置

8.‘ ’字符,“ ”字符串

9.左移 >> ,右移 <<

10.异或 ^= 0等于自己,^=自己等于0

11.优先队列:priority_queue<int,vector<int>,less<int> >  最大的数在顶部,priority_queue<int,vector<int>,greater<int> > 最小的数在顶部

      push(),pop(),top()

      优先队列容器与队列一样,只能从队尾插入元素,从队首删除元素。但是它有一个特性,就是队列中最大或最小的元素总是位于队首,所以出队时,并非按照先进先出的原则进行,

      而是将当前队列中最大最小的元素出队。

12.to_string

13.vector<int> result;

result.insert(result.begin(),tmp);

vector通常采用的时候push_back(),从后面增加;在begin处insert,与push_back方式相比,相当于是一种逆序的操作。

145. Binary Tree Postorder Traversal二叉树的后序遍历用到了这种操作

14.string:  返回值是string的,如果返回空字符串,返回的是"",不是" ",也不是''

substr是提取子字符串,第一个参数是开始的index,第二个是个数,不是结尾的index

    find函数找到了返回的是字符串的第一个字符的index,找不到返回的是string:;npos

15.deque:双端队列

front()、back()查看队列的头元素和尾元素

pop_front()、pop_back()把队列的头或者尾元素弹出

push_back()把元素从尾巴上输入到队列中。

注意:不再具有队列的push、top、pop的操作

16.堆的实现有multiset和priority_queue

priority_queue和queue不同在于,queue是先进去的在头部,priority_queue是优先级高的在头部,这个优先级可以自己定义的。由于与queue很相似,操作也很相似,top()、push()、pop()。

priority_queue的定义是priority_queue<Type, Container, Functional>,type是存储数据的类型,container是存储使用的容器的类型,一般使用vector,functional是比较的方式。

priority_queue <int,vector<int>,less<int> > q是升序序列、priority_queue <int,vector<int>,greater<int> > q是降序序列。记忆的方式可以认为是less的在头部、或者greater的在头部。

#include <queue>

multiset<int,greater<int>> numbers:大根堆,即begin处是最大的值;multiset<int,less<int>> numbers:小根堆,即begin处是最小的值。记忆的方式是greater最大的头部

multiset<int,greater<int>>::iterator it 使用迭代器访问

#include <set>

17. unordered_map:  size(): 返回有效元素个数

           find():通过给定主键查找元素,没找到:返回unordered_map::end

count():返回匹配给定主键的元素的个数,也就是同一个key,对应多少个value

我记得哪个容器使用的是count,跟unordered_map的count运用场景不一样

         unordered_map可以通过主键来访问,返回是value值。比如m[1] = 1。find返回的则是迭代器,且迭代器指向的是键值对,first对应键,second对应值。

         rbegin是最后一个元素

           m.find(key) != m.end()就不在容器中

18.双向链表list的splice函数,void splice (iterator position, list& x, iterator i);  //将列表x中迭代器 i 指向的元素移到当前list的position指向的位置处,由于i指向的元素从列表x中被移除,所以迭代器 i 此时是invalid的;position是当前列表的迭代器,i是列表x的迭代器。时间复杂度为0(1)

list:pop_back删除最后一个元素

push_front在前面加入

19.pair、make_pair:   std::pair主要的作用是将两个数据组合成一个数据,两个数据可以是同一类型或者不同类型,->first、->second用于访问pair中的第一个和第二个元素

           make_pair:无需写出型别, 就可以生成一个pair对象

               例: std::make_pair(42, '@');

                  而不必费力写成: 
                  std::pair<int, char>(42, '@')

          pair中访问first、second不用加括号,a.first a.second,这个应该是成员变量,不像其他容器是成员函数

20.auto:可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型

21.迭代器:是一种检查容器内元素并遍历元素的数据类型。C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只有少数容器(如vector)支持下标操作访问容器元素。

c++ 基础用法、基础知识以及一些常规的操作的更多相关文章

  1. Docker 安装和基础用法

    理解Docker(1):Docker 安装和基础用法 本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 ...

  2. 易优CMS:【小白学标签】之empty的基础用法

    [基础用法] 名称:empty 功能:判断某个变量是否为空,可以嵌套到任何标签里面使用,比如:channel.type等 语法: {eyou:empty name='$eyou.field.seo_t ...

  3. PropertyGrid控件由浅入深(二):基础用法

    目录 PropertyGrid控件由浅入深(一):文章大纲 PropertyGrid控件由浅入深(二):基础用法 控件的外观构成 控件的外观构成如下图所示: PropertyGrid控件包含以下几个要 ...

  4. logstash安装与基础用法

    若是搭建elk,建议先安装好elasticsearch 来自官网,版本为2.3 wget -c https://download.elastic.co/logstash/logstash/packag ...

  5. elasticsearch安装与基础用法

    来自官网,版本为2.3 注意elasticsearch依赖jdk,2.3依赖jdk7 下载rpm包并安装 wget -c https://download.elastic.co/elasticsear ...

  6. BigDecimal最基础用法

    BigDecimal最基础用法 用字符串生成的BigDecimal是不会丢精度的. 简单除法. public class DemoBigDecimal { public static void mai ...

  7. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  8. Vue组件基础用法

    前面的话 组件(Component)是Vue.js最强大的功能之一.组件可以扩展HTML元素,封装可重用的代码.根据项目需求,抽象出一些组件,每个组件里包含了展现.功能和样式.每个页面,根据自己所需, ...

  9. Smarty基础用法

    一.Smarty基础用法: 1.基础用法如下 include './smarty/Smarty.class.php';//引入smarty类 $smarty = new Smarty();//实例化s ...

随机推荐

  1. Emmet使用方法

    本文摘自:http://www.iteye.com/news/27580 Emmet的前身是大名鼎鼎的Zen coding,如果你从事Web前端开发的话,对该插件一定不会陌生.它使用仿CSS选择器的语 ...

  2. jxls实现动态图表

    此文章是基于 jxls实现基于excel模板的报表 一. 制作excel动态图表模板 1. 安装 excel 2003 ,新建文件,命名为:runRecord.xls 2. 创建两个表格,分别命名为: ...

  3. java设计模式之抽象工厂模式学习

    工厂模式有个问题就是,类的创建依赖工厂.要想增加一个工厂类,就要修改原来的代码,这违背了闭包原则.所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的 ...

  4. 修改phpmyadmin不能导入大文件的限制

    情景:我需要导入一张1.03GB的数据表,但是phpmyadmin导入文件默认为不能超过2M.因此需要修改phpmyadmin导入文件的大小限制. 1.phpmyadmin的导入也就是php完成文件上 ...

  5. JS原生隐藏显示图片,点击切换图片的效果

    今天要说的内容,看标题就都能知道了!所有知识点一览无遗啊!咱们今天的东西,是纯纯的原生JS代码, 我先说一下要求, 1.有两个按钮,内容为显示,和换, 2.当点击显示的时候,按钮文字变成隐藏,同时图片 ...

  6. <Android 应用 之路> 百度地图API使用(2)

    简介 上一篇只是大致的提一下百度地图API的Android SDK的基本内容,然后抄袭一个官网上的Demo,今天看一下百度地图的第一部分,地图类型和基本的显示. 简单实战 不同类型地图的显示 //设置 ...

  7. Qt判断鼠标在控件上

    QT判断鼠标是否在某子窗口控件上方 需要注意的是,子窗口获取geometry,是相对于父窗口的相对位置,QCursor::pos()获取的是鼠标绝对位置,要不将父窗口的相对位置进行换算,要不将鼠标的绝 ...

  8. 【Jmeter】参数Parameters和Body Data

    在做接口并发测试的时候,才发现Jmeter中的Parameters和Body Data两种参数格式并不是简单的一个是xx=xx,另外一个是json格式的参数 先看一个接口 [post] /api/xx ...

  9. pt-find使用

    查找MySQL的表,并且做一些操作,基本语法就如下: pt-find [OPTIONS] [DATABASES] (1)查找一天前建立的MyISAM 引擎的表 [root@mxqmongodb2 bi ...

  10. JAVA读取HDFS信息

    uri填路径 public static void main(String[] args) throws IOException { String uri = "/user/WeiboAD/ ...