-
容器(Containers)
-
分配器(Allocators)
-
算法(Algorithm)
-
迭代器(Iterators)
-
适配器(Adapters)
-
仿函数(Functors)
String
创建
-
string();
//创建一个空的字符串 例如: string str; -
string(const char* s);
//使用字符串s初始化 -
string(const string& str);
//拷贝构造
赋值 =
-
string& operator=(const string &s);
//把字符串s赋给当前的字符串
拼接 +=
-
string& operator
+=
(const string& str);
//重载+=操作符 -
string&
append
(const string &s);
//同operator+=(const string& str)
查找 find rfind(找不到-1)替换replace
int find(const string& str, int pos = 0) const; //查找str第一次出现位置,从pos开始查找
int rfind(const string& str, int pos = npos) const; //查找str最后一次位置,从pos开始查找
string& replace(int pos, int n, const string& str); //替换从pos开始n个字符为字符串str
比较 compare
-
int compare(const string &s) const;
//与字符串s比较 -
int compare(const char *s) const;
//与字符串s比较
存取 [],at 当字符数组
-
char& operator[](int n);
//通过[]方式取字符 -
char& at(int n);
//通过at方法获取字符
插入和删除 insert erase
-
string& insert(int pos, const string& str);
//插入字符串 -
string& erase(int pos, int n = npos);
//删除从Pos开始的n个字符
子串 substr
string substr(int pos = 0, int n = npos) const;
Vector
创建
-
vector<T> v;
//采用模板实现类实现,默认构造函数 -
vector(n, elem);
//构造函数将n个elem拷贝给本身。 -
vector(const vector &vec);
//拷贝构造函数。
赋值 = 交换 swap
-
vector& operator=(const vector &vec);
//重载等号操作符 -
swap(vec);
// 将vec与本身的元素互换,可用于收缩内存 -
vector<int>(v).swap(v); //匿名对象
容量 empty ,capacity ,size ,resize
empty(); //判断容器是否为空
capacity(); //容器的容量
size(); //返回容器中元素的个数
resize(int num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
resize(int num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
插入删除 push_back, pop_back, insert, erase, clear
push_back(ele); //尾部插入元素ele
pop_back(); //删除最后一个元素
insert(const_iterator pos, ele); //迭代器指向位置pos插入元素ele
erase(const_iterator pos); //删除迭代器指向的元素
clear(); //删除容器中所有元素
存取 at,[],front,back
-
at(int idx);
//返回索引idx所指的数据 -
operator[];
//返回索引idx所指的数据 -
front();
//返回容器中第一个数据元素 -
back();
//返回容器中最后一个数据元素
预留空间 reserve
-
reserve(int len);
//容器预留len个元素长度,预留位置不初始化,元素不可访问,数据量较大时可用于减少vector在动态扩展容量时的扩展次数。
Deque 双端数组
创建
-
deque<T> deq
; //默认构造形式 -
deque(n, elem);
//构造函数将n个elem拷贝给本身。 -
deque(const deque &deq);
//拷贝构造函数
大小操作(与vector相比无capacity)
deque.empty(); //判断容器是否为空
deque.size(); //返回容器中元素的个数
deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
deque.resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
插入和删除(比vector多了头部的操作) xx_front
push_back(elem); //在容器尾部添加一个数据
push_front(elem); //在容器头部插入一个数据
pop_back(); //删除容器最后一个数据
pop_front(); //删除容器第一个数据
insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位
clear(); //清空容器的所有数据
erase(pos); //删除pos位置的数据,返回下一个数据的位置
deque 数据存取(同vector)
-
at(int idx);
//返回索引idx所指的数据 -
operator[];
//返回索引idx所指的数据 -
front();
//返回容器中第一个数据元素 -
back();
//返回容器中最后一个数据元素
stack
创建
-
stack<T> stk;
//stack采用模板类实现, stack对象的默认构造形式 -
stack(const stack &stk);
//拷贝构造函数
赋值= 和交换swap
-
stack& operator=(const stack &stk);
//重载等号操作符 -
swap(stk);
//将stk与本身的元素互换
大小 empty,size
-
push(elem);
//向栈顶添加元素 -
pop();
//从栈顶移除第一个元素
栈顶元素 top
list:双向循环链表
插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。
创建
-
list<T> lst;
//list采用采用模板类实现,对象的默认构造形式: -
list(n,elem);
//构造函数将n个elem拷贝给本身。 -
list(const list &lst);
//拷贝构造函数。
赋值=交换swap
-
list& operator=(const list &lst);
//重载等号操作符 -
swap(lst);
//将lst与本身的元素互换。
大小 size, empty, resize
size(); //返回容器中元素的个数
empty(); //判断容器是否为空
resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除。
resize(num, elem); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。
插入删除 push/pop_back/front,insert,clear,erase,remove
push_back(elem);//在容器尾部加入一个元素
pop_back();//删除容器中最后一个元素
push_front(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除第一个元素
insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。
clear();//移除容器的所有数据
erase(pos);//删除pos位置的数据,返回下一个数据的位置。
remove(elem);//删除容器中所有与elem值匹配的元素。
存取 front,back
-
front();
//返回第一个元素。 -
back();
//返回最后一个元素。
反转排序 reverse,sort
-
reverse();
//反转链表 -
sort();
//链表排序 -
sort(MyCompare);
//使用仿函数自定义排序规则
Set
创建
-
set<T> st;
//默认构造函数: -
set(const set &st);
//拷贝构造函数
赋值=,交换swap
-
set& operator=(const set &st);
//重载等号操作符 -
swap(st);
//交换两个集合容器
大小 size,empty
-
size();
//返回容器中元素的数目 -
empty();
//判断容器是否为空
插入insert,删除clear,erase
-
insert(elem);
//在容器中插入元素。 -
clear();
//清除所有元素 -
erase(pos);
//删除pos迭代器所指的元素,返回下一个元素的迭代器。 -
erase(elem);
//删除容器中值为elem的元素。
查找find,统计count
-
find(key);
//查找key是否存在,若存在,返回该键的元素的迭代器;若不存在,返回set.end(); -
count(key);
//统计key的元素个数(对于set结果为0或1)
排序
插入元素时自动排序,默认为从小到大,可在定义容器时使用仿函数自定义排序规则。
-
set<int, MyCompare> s;
//Mycompare是自定义的类,类内重载了()(谓词) -
set<Person, comparePerson> s;
//set存放自定义数据类型,必须指定排序规则
map/multimap
pair 对组构造函数
-
pair<type, type> p ( value1, value2 );
-
pair<type, type> p = make_pair( value1, value2 );
map 构造函数
-
map<T1, T2> mp;
//map默认构造函数: -
map(const map &mp);
//拷贝构造函数
大小操作 size empty
插入和删除 insert, clear, erase
查找find 统计count
map排序
插入键值对时自动排序,默认为按key值从小到大,可在定义容器时使用仿函数自定义排序规则。
map<int, int, MyCompare> m; //此处的MyCompare为自定义排序规则,同set容器
map<Person, int, comparePerson> s; //若键值为自定义数据类型(少用),必须指定排序规则,同set容器