您的位置:首页 > 其它

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

#include <iostream>

2

#include <iomanip>

3

#include <string>

4

#include <map>

5

using namespace std;

6

int main()

7





{

8

map<string,int> m;

9

int n; cin>>n;

10

string s;

11

int x;

12

for (int i=1;i<=n;i++)

13





{

14

cin>>s>>x;

15

m[s]=x;

16

}

17

int k;

18

cin>>k;

19

for (int i=1;i<=k;i++)

20





{

21

cin>>s;

22

cout<<m[s]<<endl;

23

}

24

return 0;

25

}

26


27


28

一、map的说明

29

1 头文件

30

#include <map>

31


32

2 定义

33

map<string, int> my_Map;

34

或者是typedef map<string, int> MY_MAP;

35

MY_MAP my_Map;

36


37

3 插入数据

38

(1) my_Map["a"] = 1;

39

(2) my_Map.insert(map<string, int>::value_type("b",2));

40

(3) my_Map.insert(pair<string,int>("c",3));

41

(4) my_Map.insert(make_pair<string,int>("d",4));

42


43

4 查找数据和修改数据

44

(1) int i = my_Map["a"];

45

my_Map["a"] = i;

46

(2) MY_MAP::iterator my_Itr;

47

my_Itr.find("b");

48

int j = my_Itr->second;

49

my_Itr->second = j;

50

不过注意,键本身是不能被修改的,除非删除。

51


52

5 删除数据

53

(1) my_Map.erase(my_Itr);

54

(2) my_Map.erase("c");

55

还是注意,第一种情况在迭代期间是不能被删除的,道理和foreach时不能删除元素一样。

56


57

6 迭代数据

58



for (my_Itr=my_Map.begin(); my_Itr!=my_Map.end(); ++my_Itr)

{}

59


60

7 其它方法

61

my_Map.size() 返回元素数目

62

my_Map.empty() 判断是否为空

63

my_Map.clear() 清空所有元素

64

可以直接进行赋值和比较:=, >, >=, <, <=, != 等等

65


66

更高级的应用查帮助去吧,^_^;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐