- 9.5 顺序容器的所有 *** 作
- 9.5.1 vector
- 9.5.2 string
- 9.5.3 deque
- 9.5.4 list
- 9.5.5 forward_list
- 9.5.6 array
vector 将元素连续存储,每个元素紧挨着前一个元素存储。
vector 预留一些空间作为备用,用来保存更多的新元素。当需求大小大于当前容量时,才会调用 reserve 来改变其容量,每次将容量增加至原来的 2 倍。
vector 的扩张 *** 作通常比 list 和 deque 还要快。
const_iterator begin() / rbegin() const noexcept;返回指向首元素 / 尾元素的迭代器
const_iterator end() / rend() const noexcept;返回指向尾后元素 / 首前元素的迭代器
vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());顺序构建与给定范围一样元素的容器
vector (vector&& x);复制 vector x
vector (vector&& x, const allocator_type& alloc);复制 vector x,并指定分配器 alloc
vector (initializer_list
vector& operator= (vector&& x);以 vector x 的内容进行赋值
void resize (size_type n, const value_type& val);调整容器大小,使其包含 n 个元素
若 n 大于当前大小,则进行扩容,指定扩展部分的值为 val
若 n 小于当前大小,删除尾部多出的元素
const_reference operator[] (size_type n) const;返回第 n 个位置的元素引用,
越界行为未定义
const_reference at (size_type n) const;返回第 n 个位置的元素引用,
越界会抛出异常
const_reference front() const;返回第一个元素的引用
const_reference back() const;返回最后一个元素的引用
const value_type* data() const noexcept;返回一个指针,该指针指向内部用于存储元素的内存数组
void assign (InputIterator first, InputIterator last);
void assign (size_type n, const value_type& val);
void assign (initializer_list
范围 /
n 个 val 值 /
列表
赋值
void push_back (value_type&& val);在末尾添加元素 val
iterator insert (const_iterator position, value_type&& val);
iterator insert (const_iterator position, size_type n, const value_type& val);
template
iterator insert (const_iterator position, InputIterator first, InputIterator last);
iterator insert (const_iterator position, initializer_list
一个 val 值 /
n 个 val 值 /
范围 /
列表值
iterator erase (const_iterator first, const_iterator last);移除迭代器所给定的位置 / 范围
iterator emplace (const_iterator position, Args&&… args);在迭代器 position 之前插入元素,该元素由参数 args 通过构造函数进行构造
void emplace_back (Args&&… args);在末尾插入元素,该元素由参数 args 通过构造函数进行构造
bool operator _op (const vector
_ op 可以是 <,<=,>,>=,==,!=
void swap (vector
const_iterator begin() / rbegin() const noexcept;返回指向首元素 / 尾元素的迭代器
const_iterator end() / rend() const noexcept;返回指向尾后元素 / 首前元素的迭代器
string (InputIterator first, InputIterator last);以相同的顺序复制范围中的字符序列
void resize (size_type n, char c);将字符串调整为 n 字符的长度
若 n 大于当前长度,则在末尾插入 c 字符,默认为空字符
若 n 小于当前长度,则截断后面多出的字符
const char& operator[] (size_t pos) const;返回第 pos 个字符的引用,
越界行为未定义
const char& at (size_t pos) const;返回第 pos 个字符的引用,
越界会抛出异常
const char& front() const;返回第一个元素的引用
const char& back() const;返回最后一个元素的引用
功能同 c_str()
string& operator+= (const char* s);
string& operator+= (char c);
string& operator+= (initializer_list
string& append (const string& str, size_t subpos, size_t sublen);
string& append (const char* s);
string& append (const char* s, size_t n);
string& append (size_t n, char c);
template
string& append (InputIterator first, InputIterator last);
string& append (initializer_list
string& assign (const string& str, size_t subpos, size_t sublen);
string& assign (const char* s);
string& assign (const char* s, size_t n);
string& assign (size_t n, char c);
template
string& assign (InputIterator first, InputIterator last);
string& assign (initializer_list
string& assign (string&& str) noexcept;为字符串分配新值,以取代其当前内容
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);
string& insert (size_t pos, const char* s);
string& insert (size_t pos, const char* s, size_t n);
string& insert (size_t pos, size_t n, char c);
iterator insert (const_iterator p, size_t n, char c);
iterator insert (const_iterator p, char c);
template
iterator insert (iterator p, InputIterator first, InputIterator last);
string& insert (const_iterator p, initializer_list
iterator erase (const_iterator p);
iterator erase (const_iterator first, const_iterator last);擦除字符串的一部分
string& replace (const_iterator i1, const_iterator i2, const string& str);
string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);
string& replace (size_t pos, size_t len, const char* s);
string& replace (const_iterator i1, const_iterator i2, const char* s);
string& replace (size_t pos, size_t len, const char* s, size_t n);
string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);
string& replace (size_t pos, size_t len, size_t n, char c);
string& replace (const_iterator i1, const_iterator i2, size_t n, char c);
template
string& replace (const_iterator i1, const_iterator i2, InputIterator first, InputIterator last);
string& replace (const_iterator i1, const_iterator i2, initializer_list
若字符串为空,则行为未定义
功能同 data()
size_t find (const char* s, size_t pos = 0) const;
size_t find (const char* s, size_t pos, size_type n) const;
size_t find (char c, size_t pos = 0) const noexcept;顺序搜索首次出现的字符 / 字符串:
pos:指定位置开始
n:匹配字符序列的长度
size_t rfind (const char* s, size_t pos = npos) const;
size_t rfind (const char* s, size_t pos, size_t n) const;
size_t rfind (char c, size_t pos = npos) const noexcept;逆序搜索首次出现的字符 / 字符串:
pos:指定位置开始
n:匹配字符序列的长度
size_t find_first_of (const char* s, size_t pos = 0) const;
size_t find_first_of (const char* s, size_t pos, size_t n) const;
size_t find_first_of (char c, size_t pos = 0) const noexcept;返回字符串中出现的第一个包含在 str / s / c 中的字符位置:
pos:指定位置开始
n:匹配字符序列的长度
size_t find_last_of (const char* s, size_t pos = npos) const;
size_t find_last_of (const char* s, size_t pos, size_t n) const;
size_t find_last_of (char c, size_t pos = npos) const noexcept;返回字符串中出现的最后一个包含在 str / s / c 中的字符位置:
pos:指定位置开始
n:匹配字符序列的长度
size_t find_first_not_of (const char* s, size_t pos = 0) const;
size_t find_first_not_of (const char* s, size_t pos, size_t n) const;
size_t find_first_not_of (char c, size_t pos = 0) const noexcept;返回字符串中出现的第一个不包含在 str / s / c 中的字符位置:
pos:指定位置开始
n:匹配字符序列的长度
size_t find_last_not_of (const char* s, size_t pos = npos) const;
size_t find_last_not_of (const char* s, size_t pos, size_t n) const;
size_t find_last_not_of (char c, size_t pos = npos) const noexcept;返回字符串中出现的最后一个不包含在 str / s / c 中的字符位置:
pos:指定位置开始
n:匹配字符序列的长度
若超出范围,则返回 pos 后所有字符组成的 string
int compare (size_t pos, size_t len, const string& str) const;
int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) const;
int compare (const char* s) const;
int compare (size_t pos, size_t len, const char* s) const;
int compare (size_t pos, size_t len, const char* s, size_t n) const;如果相等则返回 0,比给定字符串大则返回 1,比给定字符串小则返回 -1
string operator+ (string&& lhs, string&& rhs);
string operator+ (string&& lhs, const string& rhs);
string operator+ (const string& lhs, string&& rhs);
string operator+ (const string& lhs, const char* rhs);
string operator+ (string&& lhs, const char* rhs);
string operator+ (const char* lhs, const string& rhs);
string operator+ (const char* lhs, string&& rhs);
string operator+ (const string& lhs, char rhs);
string operator+ (string&& lhs, char rhs);
string operator+ (char lhs, const string& rhs);
string operator+ (char lhs, string&& rhs);重载 + 运算符,连接字符串 / 字符
bool operator_op (const char* lhs, const string& rhs);
bool operator_op (const string& lhs, const char* rhs);重载 6 个关系运算符,
_op 可以是 <,<=,>,>=,==,!=
ostream& operator<< (ostream& os, const string& str);重载字符串的输入和输出 *** 作
istream& getline (istream&& is, string& str, char delim);
istream& getline (istream& is, string& str);
istream& getline (istream&& is, string& str);读取字符串,直到遇到字符 delim 为止。
默认 delim 为 ‘n’,因此默认读取一行
(unsigned) int;
(unsigned) long;
(unsigned) long long;
float;
(long) double;
Type sto_type (const wstring& str, size_t* idx = 0, int base = 10);将 string 转换为其他类型 Type,_type 为 Type 的简写。可以转换的类型有:
int;
(unsigned) long;
(unsigned) long long;
idx:str 中开始转化的位置,默认为第一个字符开始
base:使用的进制,默认为 10 进制
Type sto_type (const wstring& str, size_t* idx = 0);将 string 转换为其他类型 Type,_type 为 Type 的简写。可以转换的类型有:
float
(long) double
idx:str 中开始转化的位置,默认为第一个字符开始
deque (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());使用范围构造 deque
deque (const deque& x, const allocator_type& alloc);拷贝构造函数,可指定分配器
deque (deque&& x, const allocator_type& alloc);移动构造函数,可指定分配器
const_iterator begin() / rbegin() const noexcept;返回指向首元素 / 尾元素的迭代器
const_iterator end() / rend() const noexcept;返回指向尾后元素 / 首前元素的迭代器
deque& operator= (deque&& x);将 x 赋值给 deque
void resize (size_type n, const value_type& val);调整容器大小,使其包含 n 个元素
若 n 大于当前大小,则进行扩容,指定扩展部分的值为 val
若 n 小于当前大小,删除尾部多出的元素
const_reference operator[] (size_type n) const;返回第 n 个位置的元素引用,
越界行为未定义
const_reference at (size_type n) const;返回第 n 个位置的元素引用,
越界会抛出异常
const_reference front() const;返回第一个元素的引用
const_reference back() const;返回最后一个元素的引用
void assign (InputIterator first, InputIterator last);
void assign (size_type n, const value_type& val);
void assign (initializer_list
范围 /
n 个 val 值 /
列表
赋值
void push_back (value_type&& val);在末尾添加元素 val
void push_front (value_type&& val);在开头添加元素 val
iterator insert (const_iterator position, value_type&& val);
iterator insert (const_iterator position, size_type n, const value_type& val);
template
iterator insert (const_iterator position, InputIterator first, InputIterator last);
iterator insert (const_iterator position, initializer_list
一个 val 值 /
n 个 val 值 /
范围 /
列表值
iterator erase (const_iterator first, const_iterator last);移除迭代器所给定的位置 / 范围
iterator emplace (const_iterator position, Args&&… args);在迭代器 position 之前插入元素,该元素由参数 args 通过构造函数进行构造
void emplace_back (Args&&… args);在末尾插入元素,该元素由参数 args 通过构造函数进行构造
void emplace_front (Args&&… args);在开头插入元素,该元素由参数 args 通过构造函数进行构造
bool operator _op (const deque
_op 可以是 <,<=,>,>=,==,!=
void swap (deque
const_iterator begin() / rbegin() const noexcept;返回指向首元素 / 尾元素的迭代器
const_iterator end() / rend() const noexcept;返回指向尾后元素 / 首前元素的迭代器
list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());指定范围构造 list
list (const list& x, const allocator_type& alloc);拷贝构造函数,可指定分配器
list (list&& x, const allocator_type& alloc);移动构造函数,可指定分配器
list& operator= (list&& x);将 x 赋值给 list
const_reference front() const;返回第一个元素的引用
const_reference back() const;返回最后一个元素的引用
void assign (InputIterator first, InputIterator last);
void assign (size_type n, const value_type& val);
void assign (initializer_list
范围 /
n 个 val 值 /
列表
赋值
void emplace_front (Args&&… args);在开头插入元素,该元素由参数 args 通过构造函数进行构造
void emplace_back (Args&&… args);在末尾插入元素,该元素由参数 args 通过构造函数进行构造
void push_front (value_type&& val);在开头插入元素,值为 val
void push_back (value_type&& val);在末尾插入元素,值为 val
iterator insert (const_iterator position, value_type&& val);
iterator insert (const_iterator position, size_type n, const value_type& val);
template
iterator insert (const_iterator position, InputIterator first, InputIterator last);
iterator insert (const_iterator position, initializer_list
一个 val 值 /
n 个 val 值 /
范围 /
列表值
void resize (size_type n, const value_type& val);调整容器大小,使其包含 n 个元素
若 n 大于当前大小,则进行扩容,指定扩展部分的值为 val
若 n 小于当前大小,删除尾部多出的元素
iterator erase (const_iterator first, const_iterator last);移除迭代器所给定的位置 / 范围
void splice (const_iterator position, list&& x);
void splice (const_iterator position, list& x, const_iterator i);
void splice (const_iterator position, list&& x, const_iterator i);
void splice (const_iterator position, list& x, const_iterator first, const_iterator last);
void splice (const_iterator position, list&& x, const_iterator first, const_iterator last);实现 list 拼接的功能。将 x 的内容部分或全部元素删除,拼插入到目的 list 的 position 之后
void remove_if (Predicate pred);从容器中取出所有满足谓词 pred 的元素并删除
template
void unique (BinaryPredicate binary_pred);将元素与其前一个元素进行比较,若相等则删除,
若指定了第二参数,则使用 二元谓词 binary_pred 判断是否删除元素
void merge (list&& x);
template
void merge (list& x, Compare comp);
template
void merge (list&& x, Compare comp);
合并两个有序列表,合并后 x 中的所有元素将被删除。
若指定谓词 comp,则按照 comp 进行合并
(通常使用之前会先 sort() 使其有序)
template
void sort (Compare comp);对 list 进行排序。
若指定谓词 comp,则按照 comp 进行排序
bool operator _op (const list
_op 可以是 <,<=,>,>=,==,!=
void swap (list
const_iterator begin() const noexcept;返回指向首元素的迭代器
const_iterator end() const noexcept;返回指向尾后元素的迭代器
const_iterator before_begin() const noexcept;返回指向首前元素的迭代器
explicit forward_list (size_type n, const value_type& val, const allocator_type& alloc = allocator_type());指定构造 n 个元素,每个元素的值为 val
forward_list (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());根据范围构造 forward_list
forward_list (const forward_list& fwdlst, const allocator_type& alloc);拷贝构造函数,可指定分配器
forward_list (forward_list&& fwdlst, const allocator_type& alloc);移动构造函数,可指定分配器
forward_list& operator= (forward_list&& fwdlst);将 fwdlst 的内容赋值给 forward_list
const_reference front() const;返回第一个元素的引用
void assign (InputIterator first, InputIterator last);
void assign (size_type n, const value_type& val);
void assign (initializer_list
范围 /
n 个 val 值 /
列表
赋值
void emplace_front (Args&&… args);在开头插入元素,该元素由参数 args 通过构造函数进行构造
void push_front (value_type&& val);在开头插入元素,值为 val
iterator emplace_after (const_iterator position, Args&&… args);在 position 之后插入元素,使用 args 参数构造该元素
iterator insert_after (const_iterator position, value_type&& val);
iterator insert_after (const_iterator position, size_type n, const value_type& val);
template
iterator insert_after (const_iterator position, InputIterator first, InputIterator last);
iterator insert_after (const_iterator position, initializer_list
一个 val 值 /
n 个 val 值 /
范围 /
列表值
void resize (size_type n, const value_type& val);调整容器大小,使其包含 n 个元素
若 n 大于当前大小,则进行扩容,指定扩展部分的值为 val
若 n 小于当前大小,删除尾部多出的元素
iterator erase_after (const_iterator first, const_iterator last);移除迭代器所给定的位置 / 范围
void splice_after (const_iterator position, forward_list&& fwdlst);
void splice_after (const_iterator position, forward_list& fwdlst, const_iterator i);
void splice_after (const_iterator position, forward_list&& fwdlst, const_iterator i);
void splice_after (const_iterator position, forward_list& fwdlst, const_iterator first, const_iterator last);
void splice_after (const_iterator position, forward_list&& fwdlst, const_iterator first, const_iterator last);实现 forward_list 拼接的功能。将 fwdlst 的内容部分或全部元素删除,拼插入到目的 forward_list 的 position 之后
void remove_if (Predicate pred);从容器中取出所有满足谓词 pred 的元素并删除
template
void unique (BinaryPredicate binary_pred);将元素与其前一个元素进行比较,若相等则删除,
若指定了第二参数,则使用 二元谓词 binary_pred 判断是否删除元素
void merge (forward_list&& fwdlst);
template
void merge (forward_list& fwdlst, Compare comp);
template
void merge (forward_list&& fwdlst, Compare comp);
合并两个有序列表,合并后 fwdlst 中的所有元素将被删除。
若指定谓词 comp,则按照 comp 进行合并
(通常使用之前会先 sort() 使其有序)
template
void sort (Compare comp);对 list 进行排序。
若指定谓词 comp,则按照 comp 进行排序
bool operator _op (const forward_list
_op 可以是 <,<=,>,>=,==,!=
void swap (forward_list
const_iterator begin() / rbegin() const noexcept;返回指向首元素 / 尾元素的迭代器
const_iterator end() / rend() const noexcept;返回指向尾后元素 / 首前元素的迭代器
const_reference operator[] (size_type n) const;返回第 n 个位置的元素引用,
越界行为未定义
const_reference at (size_type n) const;返回第 n 个位置的元素引用,
越界会抛出异常
const_reference front() const;返回第一个元素的引用
const_reference back() const;返回最后一个元素的引用
const value_type* data() const noexcept;返回一个指针,该指针指向内部用于存储元素的内存数组
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)