哇的一声哭出来 pnq

用auto声明的变量必须初始化(auto是根据后面的值来推测这个变量的类型,如果后面没有值,自然会报错)
不应该用 equal() 来比较来自于无序 map 或 set 容器中的元素序列。
任何两个容器对象,只要它们的类型相同,就可以用 <、<=、>、>=、==、!= 进行词典式的比较运算。

STL 中的许多算法(即函数模板),如排序、查找等算法,在执行过程中会对容器中的元素进行比较。
这些算法在比较元素是否相等时通常用运算符进行,比较大小通常用<运算符进行,
因此,被放入容器的对象所属的类最好重载==和<运算符,以使得两个对象用==和<进行比较是有定义的。

顺序容器有以下三种:

可变长动态数组 vector、
双端队列 deque、
双向链表 list。

关联容器有以下四种:

set、multiset、
map、multimap。

除了以上两类容器外,STL 还在两类容器的基础上屏蔽一部分功能,突出或增加另一部分功能,实现了三种容器适配器:
栈 stack、队列 queue、优先级队列 priority_queue

容器都是类模板。它们实例化后就成为容器类。用容器类定义的对象称为容器对象

任何两个容器对象,只要它们的类型相同,就可以用 <、<=、>、>=、==、!= 进行词典式的比较运算。

所有容器都有以下两个成员函数:
int size():返回容器对象中元素的个数。
bool empty():判断容器对象是否为空。

顺序容器和关联容器还有以下成员函数:
begin():返回指向容器中第一个元素的迭代器。
end():返回指向容器中最后一个元素后面的位置的迭代器。
rbegin():返回指向容器中最后一个元素的反向迭代器
rend():返回指向容器中第一个元素前面的位置的反向迭代器
erase(...):从容器中删除一个或几个元素。该函数参数较复杂,此处省略。
clear():从容器中删除所有元素。

如果一个容器是空的,则 begin() 和 end() 的返回值相等,rbegin() 和 rend() 的返回值也相等。
注意end()指向的是最后一个元素的下一个位置,所以访问最后一个元素
的正确操作为:end() - 1;

反向迭代器将自增(和自减)的含义反过来了:对于反向迭代
器,++ 运算将访问前一个元素,而 -- 运算则访问下一个元素。
虽然颠倒自增和自减这两个操作符的意义似乎容易使人迷惑,但是它让程序员可以透明地向前或向后处理容器。
例如,为了以降序排列 vector,只需向 sort传递一对反向迭代器:

顺序容器还有以下常用成员函数:
front():返回容器中第一个元素的引用。
back():返回容器中最后一个元素的引用。
push_back():在容器末尾增加新元素。
pop_back():删除容器末尾的元素。
insert(...):插入一个或多个元素。该函数参数较复杂,此处省略。

/*
*二维数组
*/
vector<vector<int> > array(m); //这个m一定不能少//vector<int> array[m];
//初始化一个m*n的二维数组
for(int i=0;i<m;i++) 
{
    array[i].resize(n);
}
//遍历赋值
for(i = 0; i < array.size(); i++)
{
   for (j = 0; j < array[0].size();j++) 
    {   
        array[i][j] = (i+1)*(j+1); 
    } 
}

vector< vector<int> > maze(8, vector<int> (12, 0));

u8是unsigned char,u16是unsigned short,u32是unsigned long

在stdint.h中:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;

在stm32f10x.h 中:
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
有时间再搞:-)

原文地址:https://www.cnblogs.com/CSE-kun/p/14117247.html