容器
序列式容器
string容器
类内部封装了char ,管理这个字符串,是一个char 型的容器
构造函数
string(); string(const char *s); string(const string& str); string(int n , char c);
赋值操作
string& operator=(const char* s); string& operator=(const string &s); string& operator=(char c); string& assign(const char* s); string& assign(const char *s , int n); string& assign(const string& s); string& assign(int n , char c);
字符串拼接
string& operator+=(const char* str); string& operator+=(const char c); string& operator+=(const string& str); string& append(const char *s); string& append(const char *s, int n); string& append(const string &s); string& append(const string &s, int pos, int n)
查找和替换
int find(const string& str, int pos = 0) const; int find(const char* s, int pos = 0) const; int find(const char* s, int pos, int n) const; int find(const char c, int pos = 0) const; int rfind(const string& str, int pos = npos) const; int rfind(const char* s, int pos = npos) const; int rfind(const char* s, int pos, int n) const; int rfind(const char c, int pos = 0) const; string& replace(int pos, int n, const string& str); string& replace(int pos, int n,const char* s);
字符串比较
int compare(const string &s) const; int compare(const char *s) const;
字符存取
char& operator[](int n); char& at(int n);
插入和删除
string& insert(int pos, const char* s); string& insert(int pos, const string& str); string& insert(int pos, int n, char c); string& erase(int pos, int n = npos);
子串
string substr(int pos = 0, int n = npos) const;
vector容器
区别于数组,数组是静态空间,vector可以动态扩展
构造函数
vector<T> v; vector(v.begin() , v.end()); vector(n , elem); vector(const vector &vec);
赋值操作
vector & operator = (const vector & vec); assign(beg , end); assign(n , elem);
容量和大小
empty(); capacity(); size(); resize(int num); resize(int num , elem);
插入和删除
push_back(elem); pop_back(); insert(const_iterator pos , elem); insert(const_iterator pos , int count , elem); erase(const_iterator pos); erase(const_iterator start , const_iterator end); clear();
数据存取
at(int index); operator[]; front(); back();
互换容器
swap(vec);
预留空间
reserve(int len);
deque容器
双端数组,内部有个中控器,维护每段缓冲区中的内容
构造函数
deque<T> deqT; deque(beg , end); deque(n , elem); deque(const deque & deq);
赋值操作
deque & operator = (const deque &deq); assign(beg , end); assign(n , elem);
大小
empty(); size(); resize(num); resize(num , elem);
插入和删除
push_back(elem); push_front(elem); pop_back(); pop_front(); insert(pos , elem); insert(pos , n , elem); insert(pos , beg , end); clear(); erase(beg , end); erase(pos);
数据存取
at(int index); operator[]; front(); back();
排序
sort(iterator beg , iterator end);
stack容器
先进后出,不允许有遍历
构造函数
stack<T> stk; stack(const stack & stk);
赋值操作
stack & operator=(const stack &stk);
数据存取
push(elem); pop(); top();
大小操作
empty(); size();
queue容器
先进先出,不允许遍历
构造函数
queue<T> que; queue(const queue &que);
赋值操作
queue& operator = (const queue &que);
数据存取
push(elem); pop(); back(); front();
大小操作
empty(); size();
list
链表结构,属于双向迭代器
构造函数
list<T> lst; list(beg , end); list(n elem); list(const list *lst);
赋值和交换
assign(beg , end); assign(n , elem); list &operator = (const list &lsg); swap(lst);
大小操作
empty(); size(); resize(num); resize(num , elem);
插入和删除
push_back(elem); pop_back(); push_front(elem); pop_front(); insert(pos , elem); insert(pos , n , elem); insert(pos , beg , end); clear(); erase(beg , end); erase(pos); remove(elem);
数据存取
front(); back();
反转和排序
reserve(); sort();
关联式容器
set/multiset
所有元素都会在插入时自动被排序
构造函数
set<T> st; set(const set &st);
赋值
set& operator = (const set &st);
大小和交换
empty(); size(); swap(st);
插入和删除
insert(elem); clear(); erase(pos); erase(beg , end); erase(elem);
查找和统计
find(key); count(key);
区别
set不允许容器有重复元素 multiset允许容器有重复元素
map/multimap
所有元素都是pair,根据键值自动排序
构造函数
map<T1 , T2> mp; map(const map &mp);
赋值
map& operator = (const map &mp);
大小和交换
empty(); size(); swap(mp);
插入和删除
insert(elem); clear(); erase(pos); erase(beg , end); erase(key);
查找和统计
find(key); count(key);
pair
成对出现的数据,利用对组可以返回两个数据
创建方式
pair<type , type> p(value1 , value2); pair<type , type> p = make_pair(value1 , value2);
常用算法
遍历
for_each(iterator beg , iterator end , _func); //实现遍历容器 transform(iterator beg1 , iterator end1 , iterator beg2 , _func); //搬运容器到另一个容器中
查找
find(iterator beg, iterator end, value); //查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end() find_if(iterator beg, iterator end, _Pred); //按条件查找元素 adjacent_find(iterator beg, iterator end); //查找相邻重复元素 bool binary_search(iterator beg, iterator end, value); //查找指定元素是否存在 count(iterator beg, iterator end, value); //统计元素个数 count_if(iterator beg, iterator end, _Pred); //按条件统计元素个数
排序
sort(iterator beg, iterator end, _Pred); //对容器内元素进行排序 random_shuffle(iterator beg, iterator end); //洗牌 指定范围内的元素随机调整次序 merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //两个容器元素合并,并存储到另一容器中 reverse(iterator beg, iterator end); //将容器内元素进行反转
拷贝和替换
copy(iterator beg, iterator end, iterator dest); //容器内指定范围的元素拷贝到另一容器中 replace(iterator beg, iterator end, oldvalue, newvalue); //将容器内指定范围的旧元素修改为新元素 replace_if(iterator beg, iterator end, _pred, newvalue); //将区间内满足条件的元素,替换成指定元素 swap(container c1, container c2); //互换两个容器的元素
算术生成算法
accumulate(iterator beg, iterator end, value); //计算区间内 容器元素累计总和 fill(iterator beg, iterator end, value); //向容器中填充指定的元素
集合算法
set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //求两个容器的交集 set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //求两个集合的并集 set_difference(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); //求两个集合的差集
如果你觉得文章还不错,记得"点赞关注"
关注我的微信公众号【 加班猿 】可以获取更多内容