【10】string、vector、map

版权声明:zhuhurry 未经博主允许不得转载    https://blog.****.net/zhuhurry


一、string类
string是C++标准库的一个重要的部分,主要用于字符串处理。C++的算法库对string有很好的支持,且string还和C语言的字符串有很好的接口。
1.声明定义和初始化
我们先讨论声明和定义的区别
变量定义:给变量分配存储空间。程序中,变量有且只有一个定义,否则报错重复定义。
变量声明:向程序表明变量的类型和名字,.除非有extern关键字,否则都是变量的定义。
函数声明和定义,区分比较简单,带{}的就是定义,否则是声明
【10】string、vector、map

2.字符串常用函数
swap()   //交换两个字符串的内容
+=,append(),push_back() //在尾部添加字符\字符串
insert() //插入字符
erase() //删除字符
clear() //清除全部字符
replace() //替换字符
find() //在字符串中查找字符或字符串
compare() //比较字符串
size(),length() //返回字符数量
empty() //判断字符串是否为空
at() //存取单一字符,用[ ]也可以
copy() //将某值赋值为一个C_string
c_str() //将内容以C_string返回
data() //将内容以字符数组形式返回
substr() //返回某个子字符串
begin() end() //提供类似STL的迭代器支持

二、vector类
vector是一个容器类,与string相同都属于STL(Standard Template Library, 标准模板库)中定义的一种数据类型,可认为是数组的增强版。
头文件 #include<vector>
1.vector容器的声明及初始化
【10】string、vector、map

2.vector容器常用函数
size() //获取向量中的元素个数
empty() //判断向量是否为空
clear() //清空向量中的元素
a = b //将b向量复制到a向量中

比较
保持 == 、 != 、>、 >= 、<、 <= 的惯有含义;
如: a == b; //a向量与b向量比较, 相等则返回1


插入
insert(a.begin(), 1000); //将1000插入到向量a的起始位置前
insert(a.begin(), 3, 1000); //将1000分别插入到向量元素位置的0-2处(共3个元素)
vector<int> a(5, 1);
vector<int> b(10);
b.insert(b.begin(), a.begin(), a.end()); //将a.begin(), a.end()之间的全部元素插入到b.begin()前

删除
erase(b.begin()); //将起始位置的元素删除
erase(b.begin(), b.begin() + 3); //将(b.begin(), b.begin()+3)之间的元素删除

交换
b.swap(a); //a向量与b向量进行交换

三、map类
map是一类关联式容器,它是模板类。关联的本质在于元素的值与某个特定的键相关联,而并非通过元素在数组中的位置类获取。它的特点是增加和删除节点对迭代器的影响很小,除了操作节点,对其他的节点都没有什么影响。对于迭代器来说,不可以修改键值,只能修改其对应的实值。
功能:
①自动建立Key - value的对应。key 和 value可以是任意你需要的类型
②根据key值快速查找记录
③快速插入Key - Value 记录
④快速删除记录
⑤根据Key 修改value记录。
⑥遍历所有记录
map作为容器比vector和list等效率都要高
1.map定义的
map<int,string> m1; //生成一个空map容器
map<string,string> m2 = {{"001","shreck"},{"002","leo"}}; //值初始化map
2.增加元素
【10】string、vector、map

3.查找元素
【10】string、vector、map

4.删除
【10】string、vector、map

5.map的一些基本操作函数
【10】string、vector、map