1.栈的相关操作:

top():返回一个栈顶元素的引用,类型为 T&。如果栈为空,返回值为-1。
push(const T& obj):可以将对象副本压入栈顶。这是通过调用底层容器的 push_back() 函数完成的。
push(T&& obj):以移动对象的方式将对象压入栈顶。这是通过调用底层容器的有右值引用参数的 push_back() 函数完成的。
pop():弹出栈顶元素。
size():返回栈中元素的个数。
empty():在栈中没有元素的情况下返回 true。
emplace():用传入的参数调用构造函数,在栈顶生成对象。
swap(stack<T> & other_stack):将当前栈中的元素和参数中的元素交换。参数所包含元素的类型必须和当前栈的相同。对于 stack 对象有一个特例化的全局函数 swap() 可以使用。

2.树状数组:

3.long int即long,给人的感觉好像是长整型,但实际上,它和int一样,只有32位。
既然long int与int相同,那么为什么还有long int这种尴尬的类型呢?
原因是早期的C编译器定义了long int占用4个字节,int占用2个字节,long int是名副其实的长整型。在ANSI C的标准中,对长整型的定义也是long int应该至少和int一样长,而不是long int 一定要比int占用存储字节长。
int的范围-2^31 ~ 2^31-1,long范围如果在64位编译器上同int,
longlong 的范围 -2^63 ~ 2^63-1

4.C++提供了一个swap函数用于交换,swap(a,b),该函数定义在命名空间std中

5.辗转取余法:

long long gcd(long long a,long long b){
    return b==0?abs(a):gcd(b,a%b);
}

6.结构体中没有参数的构造函数的赋值可以直接用大括号

struct NODE {
    int address, key, next;
    bool flag;
}node[100000];
node[0] = {1, 2, 3, false};

7.vector开辟一块空间来作为数组来存放元素(随机迭代器),不像list和deque(双向迭代器)一样可以双向插入取出(push_back,push_front),这样容易造成内存碎片,引起内存泄漏
8.Math.floor(n):返回一个小于等于n的最大整数
9.C++结构体与类在使用上已经没有本质区别了,可以采用构造函数的方式来为结构体变量初始化

 struct Stu
 {
  int  nNum;
  bool bSex;
  char szName[20];
  char szEmail[100];
 
  //构造函数初始化
 
  Stu()
  {
nNum = 0;
   bSex = false;
   memset(szName,0,sizeof(szName));
   memset(szEmail,0,sizeof(szEmail));
 
  }
 
 };