string
C++11后(包括)使用std::string
不再需要包含头文件,#include <string>
。
string是字符容器,内部维护一个动态字符数组。功能强大,自动分配内存与释放,但效率略低,占用资源略多。
NBTS(null-terminated string)
C语言风格字符串,即以0('\0'
)为结束的字符串。而string容器没有此特点。
string::npos
静态常量成员string::npos
为string所能容纳的最大长度,通常是unsigned long long
的最大值,18446744073709551615。
函数原型 |
作用 |
string(); |
创建一个长度为0的string容器 |
string(const char* s); |
依据s指向的NBTS构造string容器 |
string(const string& str, size_t pos = 0, size_t n = npos); |
依据str对象深拷贝构造string容器,或从pos下标开始长度为n构造string容器 |
template<class InputIterator> string(InputIterator first,InputIterator last); |
将string对象初始化为区间[first,last]内的字符,其中begin和end是迭代器,其行为就像指针,用于指定位置。 |
string(const char* s, size_t n); |
依据s指向的NBTS的前n个字符构造string容器,即使超过了NBTS结尾 |
string(size_t n, char c); |
以n个c字符构造string容器 |
容量大小操作
typedef unsigned long long size_t
|
函数原型 |
作用 |
size_t capacity() const; |
返回容器当前容量 |
size_t size() const; |
返回当前容器字符串长度 |
size_t length() const; |
返回当前容器字符串长度 |
bool empty() const; |
判断容器是否为空 |
void clear(); |
清空容器 |
void resize(size_t length, char c = 0); |
把容器实际大小设为legnth,若减小,则截断多余部分,若增大,则用字符c填充 |
内容操作
函数原型 |
作用 |
char& operator[](int n); |
返回容器的第n个元素 |
char& at(int n); |
返回容器的第n个元素,越界时抛出out_of_range异常 |
const char* c_str() const; |
以只读NBTS形式返回容器中元素首地址 |
const char* data() const; |
返回容器中元素首地址 |
赋值操作
作用参考string容器的构造函数。
函数原型 |
string& operator=(const char* s); |
string& operator=(const string&s); |
string& operator=(char c); |
string& assign(const char* s); |
string &assign(const char* s, size_t n); |
string& assign(const string& str); |
string& assign(size_t n, char c); |
string& assign(const string& str, size_t pos = 0, size_t n = npos); |
template<class InputIterator> string& assign(InputIterator first,InputIterator last); |
拼接操作
函数原型 |
作用 |
string& operator+=(const string& str); |
重载+=操作符,将string对象str连接到当前string对象后 |
string& operator+=(const char* s); |
重载+=操作符,将C风格字符串s连接到当前string对象后 |
string& operator+=(const char c); |
重载+=操作符,将字符c连接到当前string对象后 |
string& append(const char *s); |
把C语言风格字符串s连接到当前string对象结尾 |
string &append(const char *s, size_t n); |
把C语言风格字符串s的前n个字符连接到当前string对象结尾 |
string& append(const string&str); |
将string对象str连接到当前string对象后 |
string& append(const string& s, int pos, int n); |
把string对象s中从pos开始的n个字符连接到当前string对象结尾 |
string &append(size_t n, char c); |
在当前string容器结尾添加n个字符c |
交换操作
函数原型 |
作用 |
void swap(string& str); |
把当前容器与str交换 |
如果数据量很小,交换的是容器中的内容,如果数据量比较大,交换的是动态数组的地址。
截取操作
函数原型 |
作用 |
string substr(size_t pos = 0, size_t n = npos) const; |
返回pos开始的n个字符组成的子容器 |
比较操作
compare函数比较的依据为字典顺序,在>时返回 1,<时返回 -1,==时返回 0。
函数原型 |
作用 |
==, >, <, >=, <= |
两string容器内容按字典顺序比较 |
int compare(size_t pos, size_t n, const string& str) const; |
比较当前字符串从pos开始的n个字符组成的字符串与str的大小 |
int compare(size_t pos, size_t n, const string& str, size_t pos2, size_t n2)const; |
比较当前字符串从pos开始的n个字符组成的字符串与str中pos2开始的n2个字符组成的字符串的大小 |
int compare(const char *s) const; |
当前字符串与C语言风格字符串s比较 |
int compare(size_t pos, size_t n, const char* s) const; |
比较当前字符串从pos开始的n个字符组成的字符串与C风格字符串s的大小 |
int compare(size_t pos, size_t n, const char* s, size_t pos2) const; |
比较当前字符串从pos开始的n个字符组成的字符串与C风格字符串s中从pos2位置开始的n个字符组成的字符串的大小 |
查找操作
find为顺序查找,rfind(即reverse)为逆序查找。
函数原型 |
作用 |
size_t find(const string& str, size_t pos = 0) const; |
从pos位置开始查找str第一次出现的下标 |
size_t find(const char* s, size_t pos = 0) const; |
从pos位置开始查找C风格字符串s第一次出现的下标 |
size_t find(const char* s, size_t pos, size_t n) const; |
从pos位置开始查找C风格字符串s的前n个字符第一次出现的位置 |
size_t rfind(const string& str, size_t pos = npos) const; |
从pos位置开始查找str第一次出现的下标 |
size_t rfind(const char* s, size_t pos = npos) const; |
从pos位置开始查找C风格字符串s第一次出现的下标 |
size_t rfind(const char* s, size_t pos, size_t n) const; |
从pos位置开始查找C风格字符串s的前n个字符第一次出现的位置 |
替换操作
函数原型 |
作用 |
string& replace(size_t pos, size_t len, const string& str); |
从pos位置开始len长度的内容被替换为字符串str |
string& replace(size_t pos, size_t len, const string& str, size_t subpos, size_t sublen = npos); |
从pos位置开始len长度的内容被替换为string对象str从位置subpos到sublen的内容 |
string& replace(size_t pos, size_t len, const char* s); |
从pos开始len长度的内容被替换为C风格字符串s |
string& replace(size_t pos, size_t len, const char* s, size_t n); |
从pos位置开始len长度的内容被替换为C风格字符串s前n个字符大小的内容 |
string& replace(size_t pos, size_t len, size_t n, char c); |
从pos位置开始len长度的内容被n个字符c替换 |
插入操作
函数原型 |
作用 |
string& insert(size_t pos, const char* s); |
在pos位置插入C语言风格字符串s |
string& insert(size_t pos, const char* s, size_t n); |
在pos位置插入C语言风格字符串s前n个字符大小的内容。 |
string& insert(size_t pos, const string& str); |
在pos位置插入str |
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen = npos); |
在pos位置插入string对象str从位置subpos到位置sublen大小的内容 |
string& insert(size_t pos, size_t n, char c); |
在pos位置插入n个字符c |
删除操作
函数原型 |
作用 |
string& erase(int pos, int n = npos); |
删除从pos开始的n个字符 |
vector容器
vector容器封装了动态数组。
使用时需包含头文件 #include<vector>
。
Constructor
函数原型 |
作用 |
vector(); |
创建一个空的vector容器 |
vector(initializer_list<T> il); |
使用统一初始化列表 |
vector(const vector<T>& v); |
拷贝构造函数 |
vector(Iterator first, Iterator last); |
用迭代器创建vector容器 |
vector(vector<T>&& v); |
移动构造函数(C++11标准) |
explicit vector(const size_t n); |
创建vector容器,元素个数为n(容量和实际大小都是n) |
vector(const size_t n, const T& value); |
创建vector容器,元素个数为n,值均为value |
容量大小操作
函数原型 |
作用 |
size_t capacity() const; |
返回容器当前容量 |
size_t size() const; |
返回当前容器字符串长度 |
bool empty() const; |
判断容器是否为空 |
void clear(); |
清空容器 |
void resize(size_t length, char c = 0); |
把容器实际大小设为legnth,若减小,则截断多余部分,若增大,则用字符c填充 |
list容器
map容器
unordered_map容器