读书笔记--容器操作总结
来源:互联网 发布:北京程序员周末培训班 编辑:程序博客网 时间:2024/05/27 21:49
下述中的某些操作,有些编译器不支持;
顺序容器类型:vector, deque, list, forward_list, array, string
args表示多种参数形式,下面不一一列出
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
string
使用时包含头文件:
#include<string>
using std::string
初始化string对象的方式:
string s1 默认初始化,s1是一个空串
string s2(s1) s2是s1的副本
string s2 = s1 等价于s2(s1),s2是s1的副本
string s3("value") s3是子面值"value"的副本,除了字面值最后的那个空字符外
string s3 = "value" 等价于s3("value“),s3是字面值”value"的副本
string s4(n, 'c') 把s4初始化为由连续n个字符c组成的串
string s(cp,n) s是cp指向的数组中的前n个字符的拷贝。此数组至少应该包含n个字符
string s(s2, pos2) s是string s2从下标pos2开始的字符的拷贝。若pos2>s2.size(),构造函数的行为未定义
string s(s2, pos2, len2)
s是string s2从下标pos2开始len2个字符的拷贝。若pos2>s2.size(), 构造函数的行为未定义。不管len2的值多少,构造函数至多拷贝s2.size()-pos2个字符
string 的操作:
os << s 将s 写出到输出流os当中,返回os
is >> s 从is中读取字符串赋给s,字符串以空白分隔,返回is
getline(is, s) 从is中读取一行赋给s,返回is
s.empty() s为空返回true, 否则返回false
s[n] 返回s中第n个字符的引用,位置n从0计起
s1 + s2 返回s1和s2连接后的结果
s1 = s2 用s2的副本代替s1中原来的字符
s1 == s2 如果s1和s2中所含字符完全一样,则他们相等,string对象的相等性判断对字母大小写敏感
< , <=, >, >= 利用字符在字典中的顺序进行比较,且对字母的大小写敏感
a.swap(b) 交换a和b的元素
c.begin(), c.end() 返回指向c的首元素和尾元素之后位置的迭代器
c.cbegin(), c.cend() 返回const_iterator
s.substr(pos,n) 返回一个string,包含s中从pos开始的n个字符的拷贝。pos的默认值为0。n的默认值为s.size() - pos,即拷贝从pos开始的所有字符
s.append(args) 将args追加到s。返回一个指向s的引用
s.replace(range, args) 删除s中范围range内的字符,替换为args指定的字符。range或者是一个下标和一个长度,或者是一对指向s的迭代器。返回一个指向s的引用
c.insert(p,t) 在迭代器p指向的元素之前创建一个值为t,返回指向新添加的元素的迭代器
c.insert(p, n, t) 在迭代器p指向的元素之前插入n个值为t的元素,返回指向新添加的第一个元素的迭代器;若n=0,则返回p
c.insert(p,b, e)
将迭代器b和e指定的范围内的元素插入到迭代器p指向的元素之前。b和e不能指向c中的元素。返回指向新添加的第一个元素的迭代器,若范围为空,则返回p
c.insert(p,il) il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p指向的元素之前。返回指向新添加的第一个元素的迭代器;若列表为空则返回p
s.insert(pos, args)
在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回第一个插入字符的迭代器
string访问元素:
c.back() 返回c中尾元素的应用,若c为空,函数行为未定义
c.front() 返回c中首元素的引用,若c为空,函数行为未定义
c[n] 返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则函数行为未定义
c.at(n) 返回下标为n的元素的引用。如果下标越界,则抛出out_of_range异常
string的删除操作:
c.erase(args) 删除args指定的元素
c.clear() 删除c中的所有元素,返回void
c.pop_back() 删除c中尾元素,若c为空,则函数行为未定义。函数返回void
c.erase(p)
删除迭代器p所指定的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后(off-the-end)迭代器。若p是尾后迭代器,则函数行为未定义
c.erase(b, e) 删除迭代器b和e所指定范围内的元素。返回一个指向最后一个被删元素之后元素的迭代器,若e本身就是尾后迭代器,则函数也返回尾后迭代器
s.erase(pos, len) 删除从位置pos开始的len个字符。如果len被忽略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
string的容器大小操作:
s.size() 返回s中字符个数,返回的类型是string::size_type
c.max_size() c可保存的最大元素数目
c.resize(n) 调整c的大小为n个元素。若n<c.size(), 则多出的元素被丢弃。若必须添加新的元素,对新元素进行值初始化
c.resize(n, t) 调整c的大小为n个元素。任何新添加的元素都初始化为值t
c.shrink_to_fit() 请将capacity()减少为与size()相同大小
c.capacity() 不重新分配内存空间的话,c可以保存多少元素
c.reserve(n) 分配至少能容纳n个元素的内存空间
string的替换操作:
seq.assign(b, e) 将seq中的元素替换为迭代器b和e所表示的范围中的元素。迭代器b和e不能指向seq中的元素
seq.assign(il) 将seq中的元素替换为初始化列表il中的元素
seq.assign(n, t) 将seq中的元素替换为n个值为t的元素
s.assign(args) 将s中的字符替换为args指定的字符。返回一个指向s的引用
string搜索操作
s.find(args) 查找s中args第一次出现的位置
s.rfind(args) 查找s中args最后一次出现的位置
s.find_first_of(args) 在s中查找args中任何一个字符第一次出现的位置
s.find_last_of(args) 在s中查找args中任何一个字符最后一次出现的位置
s.find_first_not_of(args) 在s中查找第一个不在args中的字符
s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
string的比较函数
s.compare(args) 根据s是等于、大于、还是小于参数指定的字符串,s.compare返回0,正数或负数
string和数值之间的转换
to_string(val) 一组重载函数,返回数值val的string表示。val可以是任何算术类型。对每个浮点类型和int或更大的整形都有相应版本的to_string。与往常一样,
小整数会被提升
stoi(s, p ,b)
stol(s, p,b)
stoul(s, p, b)
stoll(s, p ,b)
stoull(s,p, b)
返回s的起始子串(表示整数的内容)的数值,返回值类型分别是int, long, unsigned long, long long, unsigned long long 。b表示转换所用的基 数,默认值是10。p是size_t指针,用来保存s中第一个非数值字符的下标,p默认是0,即函数不保存下标
stof(s ,p)
stod(s, p)
stold(s,p)
返回s的起始子串(表示浮点数内容)的数值,返回值类型分别是float, double或long double. 参数p的作用于整数转换函数中的一样
sting 转换为C风格字符串:
string s("Hello World");
const char * str = s.c_str();
string流
使用时所需包含头文件:
#include<sstream>
using std::istringstream;
using std::ostringstream;
istringstream从string中读取数据,ostringstream想string写入数据,而头文件sstream既可从string读数据也可向string写数据,头文件sstream中定义的类型都继承自iostream头文件中定义的类型。
stringstream特有的操作:
sstream strm; strm是一个未绑定的stringstream对象。sttream是头文件sstream中定义的一个类型
sstream strm(s); strm是一个sstream对象,保存strings的一个拷贝,此构造函数是explicit的
strm.str() 返回strm所保存的string的拷贝
strm.str(s) 将string s拷贝到strm中,返回void
cctype头文件中的函数:
isalnum(c) 当c是字母或数字时为真
isalpha(c) 当c是字母时为真
iscntrl(c) 当c是控制字符时为真
isdigit(c) 当c是数字时为真
isgraph(c) 当c不是空格但可打印时为真
islower(c) 当c是小写字母时为真
isprint(c) 当c是可打印字符时为真(即c是空格或c具有可视形式)
ispunct(c) 当c是标点符号时为真(即c不是控制字符,数字,字母,可打印空白中的一种)
isspace(c) 当c是空白时为真(即c是空格,横向制表符,纵向制表符,回车符,换行符,进纸符中的一种)
isupper(c) 当c是大写字母时为真
isxdigit(c) 当c是十六进制数字时为真
tolower(c) 如果c是大写字母,输出对应的小写字母,否则原样输出c
toupper(c) 如果c是小写字母,输出对应的大写字母,否则原样输出c
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
vector
使用时所要包含头文件:
#include<vector>
using std::vector
初始化vector对象的方法:
vector<T>v1 v1是一个空vector,他潜在的元素是t类型的,执行默认初始化
vector<T>v2(v1) v2中包含有v1所有元素副本
vector<T>v2 = v1 等价于v2(v1),v2中包含有v1所有元素的副本
vector<T>v3(n, val) v3包含了n个重复元素,每个元素的值都是val
vector<T>v4(n) v4包含了n个重复の执行值初始化的对象
vector<T>v5{a,b,c....} v5包含了初始值个数的元素,每个元素被赋予相应的初始值
vector<T>v5 = {a,b,c...} 等价于v5{a,b,c...}
seq.assign(b, e) 将seq中的元素替换为迭代器b和e所表示的范围中的元素。迭代器b和e不能指向seq中的元素
seq.assign(il) 将seq中的元素替换为初始化列表il中的元素
seq.assign(n, t) 将seq中的元素替换为n个值为t的元素
vector支持的操作
v.empty() 如果v不含有任何元素,返回真,否则返回假
v.push_back(t) 向v的尾端添加一个值为t的元素
v[n] 返回v中第n个位置的元素的引用
v1 = v2 用v2中元素的拷贝替换v1中的元素
v1 = {a, b, c....} 用列表中元素的拷贝替换v1中的元素
v1 == v2 v1和v2相等当且仅当他们的元素数量相同且对应位置的元素值相同
v1 != v2 与上面相反
< , <= , > , >= 以字典序顺序进行比较
a.swap(b) 交换a和b的元素
c.begin(), c.end() 返回指向c的首元素和尾元素之后位置的迭代器
c.cbegin(), c.cend() 返回const_iterator
vector的插入操作
c.insert(args) 将args中的元素拷贝进c
c.insert(p,t) 在迭代器p指向的元素之前创建一个值为t,返回指向新添加的元素的迭代器
c.insert(p, n, t) 在迭代器p指向的元素之前插入n个值为t的元素,返回指向新添加的第一个元素的迭代器;若n=0,则返回p
c.insert(p,b, e)
将迭代器b和e指定的范围内的元素插入到迭代器p指向的元素之前。b和e不能指向c中的元素。返回指向新添加的第一个元素的迭代器,若范围为空,则返回p
c.insert(p,il) il是一个花括号包围的元素值列表。将这些给定值插入到迭代器p指向的元素之前。返回指向新添加的第一个元素的迭代器;若列表为空则返回p
vector访问元素:
c.back() 返回c中尾元素的应用,若c为空,函数行为未定义
c.front() 返回c中首元素的引用,若c为空,函数行为未定义
c[n] 返回c中下标为n的元素的引用,n是一个无符号整数。若n>=c.size(),则函数行为未定义
c.at(n) 返回下标为n的元素的引用。如果下标越界,则抛出out_of_range异常
vector的删除操作:
c.erase(args) 删除args指定的元素
c.clear() 删除c中的所有元素,返回void
c.pop_back() 删除c中尾元素,若c为空,则函数行为未定义。函数返回void
c.erase(p)
删除迭代器p所指定的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后(off-the-end)迭代器。若p是尾后迭代器,则函数行为未定义
c.erase(b, e) 删除迭代器b和e所指定范围内的元素。返回一个指向最后一个被删元素之后元素的迭代器,若e本身就是尾后迭代器,则函数也返回尾后迭代器
vector的容器大小操作:
s.size() 返回s中字符个数,返回的类型是string::size_type
c.max_size() c可保存的最大元素数目
c.resize(n) 调整c的大小为n个元素。若n<c.size(), 则多出的元素被丢弃。若必须添加新的元素,对新元素进行值初始化
c.resize(n, t) 调整c的大小为n个元素。任何新添加的元素都初始化为值t
c.shrink_to_fit() 请将capacity()减少为与size()相同大小
c.capacity() 不重新分配内存空间的话,c可以保存多少元素
c.reserve(n) 分配至少能容纳n个元素的内存空间
int int_arr[] = {0, 1, 2, 3, 4, 5, 6};
vector<int> ivec(begin(int_arr), end(int_arr));
或
vector<int>ivec(a, a + 7);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- 读书笔记--容器操作总结
- STL容器操作总结
- STL容器操作总结
- STL容器删除操作总结
- STL容器删除操作总结
- 《C++ Primer》读书笔记-第九章 02 容器支持的操作
- 《C++ Primer》读书笔记-第九章 03 顺序容器操作
- 《C++ Primer》读书笔记第十一章-2-关联容器操作
- 【STL源码剖析读书笔记】STL容器迭代器失效问题总结
- vector、map容器删除操作总结
- 关联容器的基本操作简单总结
- spring读取配置文件初始化容器操作总结
- spring读取配置文件初始化容器操作总结
- spring读取配置文件初始化容器操作总结
- spring读取配置文件初始化容器操作总结
- STL总结(一)顺序容器的操作
- vector、map容器删除操作总结
- 关联容器的基本操作简单总结
- C++枚举文件
- 程序员最值得关注的10个C开源项目
- 剑指offer31--连续子数组的最大和
- ubuntu下MySQL键值不支持中文解决办法
- 如何清除windows清除com口
- 读书笔记--容器操作总结
- ProgressBar
- linux at 命令
- 传递闭包+二进制位运算+floyd(poj2570)
- MySQL常用命令
- Could not locate executable null 解决办法
- C++资源大全
- Mysql版本区别
- mysql 连接查询