string、vector、map、set总结

来源:互联网 发布:数据库如何去重复数据 编辑:程序博客网 时间:2024/04/30 00:55

string:
初始化:
1.string s1 默认初始化一个空的string
2.string s2(s1) 用s1初始化s2
3.string s3(“hello world”) 直接初始化s3
4.string s4(10,’c’) 直接初始化为10个’c’
string有拷贝初始化和直接初始化方式,在此规定统一使用直接初始化
string对象上的操作:
1.s.empty() s为空返回true,否则返回false
2.s.size() 返回s中字符的个数
3.s[n] 返回s中第n个字符的引用,位置n从0记起
4.s1+s2 连接两个string
5.s1 = s2 用s2替换s1中的字符,即赋值
6.s1==s2、s1!=s2 如果s1,s2中的字符完全一样才相等,否则不相等
注意:s.size()的返回类型是string::size_type类型,为无符号类型。不要用有符号的变量存储其返回值。
字面值和string相加的情况,必须保证+号两侧至少有一个string对象
例如:string s1("hello" + "world" + s);是错误的

vector:
定义和初始化vector对象:
1.vector<int> v1 默认初始化v1,v1中不含有任何元素
2.vector<int> v2(v1) 用v1初始化v2
3.vector<string> v3{"q","wq"} 列表初始化
4.vector<string> v4(10,"ss") 创建指定数量的元素
在此,初始化方式统一拒绝使用=号的拷贝初始化
vector的其他操作:
1. v.empty()
2. v.size()
3. v.push_back(t)
4. v[n]
5. v1 = v2 将v2拷贝给v1
6. v = {a,b,c…} 用列表中元素的拷贝替换v中的所有元素,即v=vector<int>{a,b,c...}
7. v1==v2,v1!=v2
注意:想vector中添加元素应该用push_back而不能用下标
容器的一些通用操作:
assign:
v.assign(begin,end) 将迭代器范围内元素赋值给容器v
v.assign(10,”ss”) 将10个相同元素赋值给v
swap:
swap(v1,v2) 交换两个容器的所有元素
s.size(),s.max_size(),s.empty()
insert:
insert操作的第一个元素一定是本容器的一个迭代器,后面的参数可以有多种表示类型:其他容器的迭代器表示的范围,一个元素值,一个元素值列表,n个值为t的元素。
顺序容器访问元素的方法:
1. c.back()
2. c.front()
3. c[n]
4. c.at(n)
注意:都是返回元素的引用
顺序容器删除元素的方法:
1. v.pop_back(t)
2. v.erase(iter)
3. v.erase(begin,end)
4. v.clear()
string的额外操作:
1. string s(s2,pos) 将s2从pos开始的字符初始化s
2. string s(s2,pos,n) 将s2从pos开始的n个字符初始化s
3. s.substr(pos,n) 返回从pos开始向后n个字符的子串

关联容器:
定义关联容器:

map<string,size_t> hashMap; //定义一个空容器set<string> hashSet;        //定义一个空容器pair<string,vector<int>> line   //头文件utility,定义一个pair

pair的操作:

make_pair(v1,v2) 返回一个用v1v2初始化的pairp.first  返回p的first成员p.second  返回p的second成员

关联容器添加元素:

map.insert(v)  v是一个value_type对象例:map.insert(make_pair("word",1)),给map增加一个关键字word,将其值置为1set.insert(v)  v是一个key_type对象例:set.insert("word"),给set增加一个关键子word

关联容器删除元素:

c.erase(v) v是一个key_type对象,即在容器中删除指定关键字c.erase(p) && c.erase(p,e) 参数是迭代器

map的下标操作:
下标操作将会执行下面三个步骤:
1.在map中搜索关键字为x的元素
2.如果未找到,将一个新的关键字-值对插入到map中,值默认初始化为0
3.下标操作的返回值为新插入的这个元素的值或者已存在的这个元素的值,可以直接对这个值进行操作.而insert操作无法取得map的值
访问容器元素:
c.find(x) 找到,返回指向此关键字的迭代器,未找到,返回指向c.end()的迭代器
c.count(x) 找到,返回1,未找到,返回0

0 0
原创粉丝点击