1. string容器
#include<string>
1. 四种字符串初始方法
2. 赋值方法
String& assign(const char *s);
string& assign(const char *s, int n);
string& assign(const string &s);
string& assign(int n, char c);
3. 拼接方法
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);
4. 查找和替换
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);
总结:
(1).rfind 和 find 的区别: rfind是从右往左查找, find是从左往右查找
(2).find找到字符串后返回查找的第一个字符位置,找不到返回-1
(3).replace在替换时,要指定从哪个位置起,多少个字符,替换成什么样的字符串
5. 字符串比较:是按字符串的ASCLL码进行对比
str1.compare(str2)
6. 字符存取
string str = 'hello';
str.size() 返回字符串长度
(1).通过[]访问单个字符
str[i], i = 0,1,2,...
(2).通过at方式访问单个字符
str.at(i)
7. string插入和删除
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);
8. string子串:从字符串中获取想要的子串
string substr(int pos, int n = npos) const;
2. vector容器
1. vector容器构造
(1). 默认构造函数: vector<类型> v1;
(2). (少)区间方式构造: vector<类型> v2(v1.begin(), v1.end());
(3). (少)n个elem方式构造: vector<类型>v3(n, elem);
(4). 拷贝构造函数: vector<类型>v4(const vector&v);
2. vector赋值操作
(1). 等号直接赋值,,使用vector<类型>直接操作;
(2). 使用assign区间赋值: assign(beg, end); 将[beg, end)区间中的数据拷贝到本身;
(3). 使用assign进行赋值: assign(n, elem); 将n个elem复制到本身。
3. vector容量和大小
(1). v1.empty()
(2). v1.capacity()
(3). v1.size()
(4). v1.resize()
4. vector插入和删除
(1). push_back(elem);
(2). pop_back();
(3). insert(const_iteartor pos, elem) ;
(4). insert(const_iteartor pos, int count, elem);
(5). erase(const_iteartor pos);
(6). erase(const_iteartor start, const_iteartor end);
(7). clear() ;
5. vector数据存取
(1). at(int idx);
(2). operator[];
(3). front();
(4). back();
6. vector互换容器
swap(vec);
7. vector预留空间
reserve(int len);
3. deque容器
功能: 双端数组,可以对头端进行插入删除操作
deque与vector区别:
- vector对于头部的插入删除效率低,数据量越大,效率越低
- deque相对而言,对头部的插入删除速度会比vector更快
- vector访问元素时的速度会比deque快,这和两者的内部有关
1. deque构造函数
(1). deque<T> deqT;
(2). deque(beg, end);
(3). deque(n, elem);
(4). deque(const deque &deq);
当需要限定一个函数中的deque<T>参数为只读形式时,需要加const进行修饰, 那么在下面要遍历时,迭代器需要成为const_iteartor
2. deque赋值操作
(1). deque& operator=(const deque &deq);
(2). assign(beg, end);
(3). assign(n, elem);
3. deque容器大小操作
(1). deque.empty();
(2). deque.size();
(3). deque.resize(num);
(4). deque.resize(num, elem);
4. deque插入和删除
(1). 两端插入操作:
- push_back(elem);
- push_front(elem);
- pop_back();
- pop_front();
(2). 指定位置操作:
- insert(pos, elem);
- insert(pos, n, elem);
- insert(pos, beg, end);
- erase(beg, end);
- erase(pos);
- clear();
(3). deque数据存取
对deque中的数据进行存取操作
- at(int id);
- operator[];
- front();
- back();
(4). deque排序
利用算法实现对deque容器进行排序(默认升序)
- sort(iterator beg, iterator end);
4. stack容器
基本概念: stack是一种先进后出的数据结构,只有一个出口
栈中只有顶端的元素才可以被外界使用,因此栈不允许遍历
功能描述: 栈容器常用的对外接口
1. 构造函数:
- stack<T> stk;
- stack(const stack &stk);
2. 赋值操作:
- stack& operator(const stack &stk);
3. 数据存取:
- push(elem);
- pop();
- top();
4. 大小操作:
- empty();
- size();