目录
一、向量(vector)
1.所在头文件:#include<vector>
2.本质:对数组的封装。
3.特点:读取能在常数时间完成且大小可根据需要去改变。
4.初始化:
初始化举例:
vector<int> ivec1;
vector<int> ivec2(ivec1);
vector<string> svec1;
vector<string> svec2(ivec);
vector<int> ivec4(10,-1);
vector<string> svec(10,"hi!");
5.常用函数:
使用举例:
#include<iostream>
#include<vector>
using namespace :: std;
int main()
{
vector<int> vec;
vec.push_back(3);
vec.pop_back();
cout << vec.size() << endl;
return 0;
}
结果为0。
6.如何遍历vector?
法一(常见遍历数组方法):
for(int i = 0;i < vec.size();i++){
cout << vec[i] << endl;
}
法二(迭代器方法):
vector<int>::iterator itor = vec.begin();
for(;itor != vec.end();itor++){
cout << *itor << endl;
}
二、链表(list)
1.所在头文件:#include<list>
2.原理:关于链表原理,详见动态数据结构——静态链表(C语言),这里不再赘述。
3.特点:数据插入速度快。
4.使用方法:与vector使用方法类似。但要注意一点,在list中的遍历只支持迭代器方式的遍历,
不支持
for(int i = 0;i < list1.size();i++){
cout << list1[i] << endl;
}
三、映射(map)
1.所在头文件:#include<map>
2.原理:
3.使用方法:
map需要与pair一起使用,用来存储多个key-value对。
map<int,string> m;
pair<int,string> p1(10,"hello");
pair<int,string> p2(20,"world");
m.insert(p1);
m.insert(p2);
cout << m[10] << endl;
cout << m[20] << endl;
或
map<string,string> m;
pair<string,string> p1("H","hello");
pair<string,string> p2("W","world");
m.insert(p1);
m.insert(p2);
cout << m["H"] << endl;
cout << m["W"] << endl;
如何遍历map?
map<string,string>:: iterator itor = m.begin();
for(;itor != m.end();itor++){
cout << itor->first << endl;
cout << itor->second << endl;
}
其中itor->first是打印key的值,itor->second是打印value的值。