vector,list,map,迭代器iterator
2012-09-11 20:47
176 查看
//////////////////////////////////////////////////////////////////////////vector
#include <windows.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define VEC_COUNT 3
void main(int argc,TCHAR*argv[])
{
//1.构造函数
vector<int>vec1,vec2;
//vector<int> vec(VEC_COUNT); //有VEC_COUNT个元素,值都为0
//vector<int> vec(VEC_COUNT,2); //有VEC_COUNT个元素,值都为2
//2.添加元素
vec1.push_back(0);
vec1.push_back(4);
vec2.push_back(0);
vec2.push_back(3);
vec2.push_back(8);
//3.容量 长度
cout<<"vec1容量是:"<<vec1.capacity()<<", vec2长度是:"<<vec1.size()<<endl;
cout<<"vec2容量是:"<<vec2.capacity()<<", vec2长度是:"<<vec2.size()<<endl;
//4.遍历输出所有元素 下标/迭代器
for (vector<int>::iterator it=vec1.begin(); it!=vec1.end(); it++)
cout<<*it<<" ";
cout<<endl;
for (int i=0;i<vec2.size();i++)
cout<<vec2[i]<<" ";
cout<<endl;
//5.大于,小于,等于,大于等于,小于等于
if(vec1 < vec2)
cout<<"vec1 小于 vec2"<<endl;
else if(vec1 > vec2)
cout<<"vec1 大于 vec2"<<endl;
else if(vec1 == vec2)
cout<<"vec1 等于 vec2"<<endl;
//6.重设容器大小
//vec1.resize(1); //重新设置为,有VEC_COUNT个元素,舍掉后面的值
//vec1.resize(4); //重新设置为,有VEC_COUNT个元素,新插入的值都为0
//vec1.resize(4,2); //重新设置为,有VEC_COUNT个元素,新插入的值都为2
//7.插入
//vec1.insert(vec1.begin(),3); //插入一个值 3
//vec1.insert(vec1.begin(),3,5); //插入三个值 都是5
//vec1.insert(vec1.begin(),vec2.begin(),vec2.end()); //插入Vec2中的值
//8.删除
//vec1.erase(vec1.begin()+1); //删除指定位置的元素
//vec1.erase(vec1.begin(),vec1.end()); //删除两个位置之间的元素
//vec1.clear(); //删除vec1中所有元素
//9.赋值与对换
//vec1 = vec2; //vec1元素的个数,内容都与vec2相同
//vec2 = vec1; //vec2元素的个数,内容都与vec1相同
//vec1.swap(vec2); //交换两个容易的个数,内容
for (it=vec1.begin(); it!=vec1.end(); it++)
cout<<*it<<" ";
cout<<endl;
for (it=vec2.begin(); it!=vec2.end(); it++)
cout<<*it<<" ";
cout<<endl;
//10.泛型算法
it = find(vec1.begin(),vec1.end(),4); //查找元素4在vec1中的位置
cout<<*it<<endl;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////list
#include <list>
#include <iostream>
using namespace std;
void main(void)
{
int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
list<int> name(a,a+10);
list<int>::iterator it; //迭代器
name.push_back(11);//加在最后
name.push_front(0);//加在开始
// phone_book.insert(i,e);//加在在i所引用的元素之前
//name.insert(5,5);//为什么不行
for (it = name.begin(); it != name.end(); it++)
{
const int& e=*it;
cout << e << endl;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////map这个程序运行不了,不知道为什么???
1
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <iostream>
2
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <iomanip>
3
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <string>
4
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <map>
5
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
using namespace std;
6
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int main()
7
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
8
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
map<string,int> m;
9
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int n; cin>>n;
10
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
string s;
11
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int x;
12
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for (int i=1;i<=n;i++)
13
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
14
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>s>>x;
15
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
m[s]=x;
16
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
17
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int k;
18
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>k;
19
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for (int i=1;i<=k;i++)
20
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
21
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>s;
22
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cout<<m[s]<<endl;
23
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
24
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
return 0;
25
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
26
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
27
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
28
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
一、map的说明
29
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
1 头文件
30
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <map>
31
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
32
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
2 定义
33
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
map<string, int> my_Map;
34
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
或者是typedef map<string, int> MY_MAP;
35
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
MY_MAP my_Map;
36
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
37
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
3 插入数据
38
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) my_Map["a"] = 1;
39
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) my_Map.insert(map<string, int>::value_type("b",2));
40
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(3) my_Map.insert(pair<string,int>("c",3));
41
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(4) my_Map.insert(make_pair<string,int>("d",4));
42
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
43
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
4 查找数据和修改数据
44
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) int i = my_Map["a"];
45
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map["a"] = i;
46
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) MY_MAP::iterator my_Itr;
47
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Itr.find("b");
48
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int j = my_Itr->second;
49
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Itr->second = j;
50
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
不过注意,键本身是不能被修改的,除非删除。
51
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
52
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
5 删除数据
53
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) my_Map.erase(my_Itr);
54
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) my_Map.erase("c");
55
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
56
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
57
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
6 迭代数据
58
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr)
![](http://www.cppblog.com/Images/dot.gif)
{}
59
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
60
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
7 其它方法
61
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.size() 返回元素数目
62
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.empty() 判断是否为空
63
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.clear() 清空所有元素
64
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等
65
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
66
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
更高级的应用查帮助去吧,^_^;
#include <windows.h>
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
#define VEC_COUNT 3
void main(int argc,TCHAR*argv[])
{
//1.构造函数
vector<int>vec1,vec2;
//vector<int> vec(VEC_COUNT); //有VEC_COUNT个元素,值都为0
//vector<int> vec(VEC_COUNT,2); //有VEC_COUNT个元素,值都为2
//2.添加元素
vec1.push_back(0);
vec1.push_back(4);
vec2.push_back(0);
vec2.push_back(3);
vec2.push_back(8);
//3.容量 长度
cout<<"vec1容量是:"<<vec1.capacity()<<", vec2长度是:"<<vec1.size()<<endl;
cout<<"vec2容量是:"<<vec2.capacity()<<", vec2长度是:"<<vec2.size()<<endl;
//4.遍历输出所有元素 下标/迭代器
for (vector<int>::iterator it=vec1.begin(); it!=vec1.end(); it++)
cout<<*it<<" ";
cout<<endl;
for (int i=0;i<vec2.size();i++)
cout<<vec2[i]<<" ";
cout<<endl;
//5.大于,小于,等于,大于等于,小于等于
if(vec1 < vec2)
cout<<"vec1 小于 vec2"<<endl;
else if(vec1 > vec2)
cout<<"vec1 大于 vec2"<<endl;
else if(vec1 == vec2)
cout<<"vec1 等于 vec2"<<endl;
//6.重设容器大小
//vec1.resize(1); //重新设置为,有VEC_COUNT个元素,舍掉后面的值
//vec1.resize(4); //重新设置为,有VEC_COUNT个元素,新插入的值都为0
//vec1.resize(4,2); //重新设置为,有VEC_COUNT个元素,新插入的值都为2
//7.插入
//vec1.insert(vec1.begin(),3); //插入一个值 3
//vec1.insert(vec1.begin(),3,5); //插入三个值 都是5
//vec1.insert(vec1.begin(),vec2.begin(),vec2.end()); //插入Vec2中的值
//8.删除
//vec1.erase(vec1.begin()+1); //删除指定位置的元素
//vec1.erase(vec1.begin(),vec1.end()); //删除两个位置之间的元素
//vec1.clear(); //删除vec1中所有元素
//9.赋值与对换
//vec1 = vec2; //vec1元素的个数,内容都与vec2相同
//vec2 = vec1; //vec2元素的个数,内容都与vec1相同
//vec1.swap(vec2); //交换两个容易的个数,内容
for (it=vec1.begin(); it!=vec1.end(); it++)
cout<<*it<<" ";
cout<<endl;
for (it=vec2.begin(); it!=vec2.end(); it++)
cout<<*it<<" ";
cout<<endl;
//10.泛型算法
it = find(vec1.begin(),vec1.end(),4); //查找元素4在vec1中的位置
cout<<*it<<endl;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////list
#include <list>
#include <iostream>
using namespace std;
void main(void)
{
int a[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
list<int> name(a,a+10);
list<int>::iterator it; //迭代器
name.push_back(11);//加在最后
name.push_front(0);//加在开始
// phone_book.insert(i,e);//加在在i所引用的元素之前
//name.insert(5,5);//为什么不行
for (it = name.begin(); it != name.end(); it++)
{
const int& e=*it;
cout << e << endl;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////map这个程序运行不了,不知道为什么???
1
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <iostream>
2
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <iomanip>
3
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <string>
4
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <map>
5
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
using namespace std;
6
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int main()
7
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
8
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
map<string,int> m;
9
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int n; cin>>n;
10
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
string s;
11
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int x;
12
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for (int i=1;i<=n;i++)
13
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
14
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>s>>x;
15
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
m[s]=x;
16
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
17
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
int k;
18
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>k;
19
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
for (int i=1;i<=k;i++)
20
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cppblog.com/Images/dot.gif)
{
21
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cin>>s;
22
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
cout<<m[s]<<endl;
23
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
24
![](http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif)
return 0;
25
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
26
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
27
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
28
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
一、map的说明
29
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
1 头文件
30
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
#include <map>
31
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
32
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
2 定义
33
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
map<string, int> my_Map;
34
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
或者是typedef map<string, int> MY_MAP;
35
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
MY_MAP my_Map;
36
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
37
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
3 插入数据
38
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) my_Map["a"] = 1;
39
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) my_Map.insert(map<string, int>::value_type("b",2));
40
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(3) my_Map.insert(pair<string,int>("c",3));
41
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(4) my_Map.insert(make_pair<string,int>("d",4));
42
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
43
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
4 查找数据和修改数据
44
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) int i = my_Map["a"];
45
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map["a"] = i;
46
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) MY_MAP::iterator my_Itr;
47
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Itr.find("b");
48
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
int j = my_Itr->second;
49
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Itr->second = j;
50
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
不过注意,键本身是不能被修改的,除非删除。
51
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
52
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
5 删除数据
53
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(1) my_Map.erase(my_Itr);
54
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
(2) my_Map.erase("c");
55
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。
56
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
57
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
6 迭代数据
58
![](http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif)
for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr)
![](http://www.cppblog.com/Images/dot.gif)
{}
59
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
60
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
7 其它方法
61
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.size() 返回元素数目
62
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.empty() 判断是否为空
63
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
my_Map.clear() 清空所有元素
64
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
可以直接进行赋值和比较:=, >, >=, <, <=, != 等等
65
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
66
![](http://www.cppblog.com/Images/OutliningIndicators/None.gif)
更高级的应用查帮助去吧,^_^;
相关文章推荐
- Scala 数组(Array),列表(List),元组(Tuple),集(Set),映射(Map),迭代器(Iterator)
- 容器vector list queue 迭代器iterator
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- Scala中的集合:Iterator、BitSet、Set、Map、Stack、Vector、List、Array
- map集合的4种遍历方法和List集合的2种遍历和迭代器Iterator的使用
- const 迭代器和 const_iterator (vector/set/map)
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- 关于STL的list,vector等用迭代器iterator,用erase删除元素出现的问题。
- vector list map 遍历删除制定元素 防止迭代器失效
- vector list map 遍历删除制定元素 防止迭代器失效的实例
- java类集(List/Set/Map/Iterator)(Enumeration/Vector/Stack/Properties)
- Java中容器[Collection(List,Set,Queue),Map],迭代器(Iterator)和比较器(Comparator)及列表排序
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- java基础知识5--集合类(Set,List,Map)和迭代器Iterator的使用
- Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别与用法
- vector,map,list,queue区别
- vector,deque,list,map,数组比较与分析
- vector,list,deque,set,map of STL