码迷,mamicode.com
首页 > 其他好文 > 详细

Vector用法,新手专用;

时间:2015-02-05 07:00:47      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:

#include <iostream>
#include <string>
#include <vector>
#include <list>
using namespace std;

class A
{
public:
	int id;
	int leng;
	int what;
};

typedef struct Mystruct//这个么用到;
{
	int s_id;
	int s_leng;
	int s_what;
};
int main()
{  
	//下面的所有内容 calss A 都可以换成  struct  Mystruct
	//  类型可以是 int  string  当然也可以是构造类型struct
	vector<A>vec;//  创建一个容器。容器的类型是A 
	A a;
	a.id = 10;
	a.leng = 20;
	a.what = 30;
	vec.push_back(a);//把 对象a 放进容器,当然 a的类型必须要容器的类型想同
					//那么 a的内容就已经到了vec里面了
	
	
	vector<A>::iterator it = vec.begin(); //当然 it 是一个迭代器是一个对象,什么叫做迭代器呢,  迭代器是一个复杂指针类型的。
										  //

	//当然这个循环只会的打印出一个10出来  vec.end()并不是最后一个值,而是最后一个值的,在后面一个
	for (it; it != vec.end();++it)
	{
		cout << (*it).id << endl;   //10
		cout << it->leng << endl;   //20这里也可以用指针
	}

	//	vector<Mystruct>s_vec(vec);   不可以这么操作的。因为 vec  和s_vec的类型不匹配 将一个容器复制给另一个容器时,类型必须匹配:容器类型和
									//元素类型都必须相同。

	vector<A>vec1(vec);//这样子就OK了
	A b;  //第二次定义
	b.id = 100;
	b.leng = 200;
	b.what = 300;
	vec1.push_back(b);//里面不可以填my_struct因为类型不一样

	vector<A>::iterator ai = vec1.begin();
	cout << endl;
	// 这里就是打印10 ,和 100   因为 先前已经放了一个对象 a 进去了!
	//为什么献打印10呢。因为容器的顺序,是按照 放入的顺序进行排序的;
 	for (ai; ai != vec1.end();++ai)
	{
		cout << (*ai).id << endl;
	}

	// 采用这种初始化形式可复制不能直接复制的容器,容器是不能直接复制的,但是可以下面这样子的方法复制,从开始,到结尾,
	vector<A>vec2(vec1.begin(), vec1.end());
	vector<A>::iterator _si = vec2.begin();
	// 为什么si->id=10;呢,因为 他是复制的vec1,而vec1 是复制的vec;懂了吗?- -;复制不成改变过;
	cout << "_si->id ="<<_si->id << endl;;

	//写到这里 我忍不住要把 C++ primer上面的一段程序粘贴过来,

	//我们知道指针就是迭代器,因此允许通过使用内置数组中的
	//一对指针初始化容器也就不奇怪了:

	char *words[] = { "stately", "plump", "buck", "mulligan" };

	// calculate how many elements in words   计算有多少元素
	size_t words_size = sizeof(words) / sizeof(char *);

	// use entire array to initialize words2  使用整个数组初始化words2 
	list<string> words2(words, words + words_size);
	/*
	
	使用 sizeof计算数组的长度。将数组长度加到指向第一个元素的指针上就
	可以得到指向超出数组末端的下一位置的指针。 通过指向第一	个元素的指针
	words 和指向数组中最后一个元素的下一位置的指针,实现了words2 的初始化
	其中第二个指针提供停止复制的条件,其所指向的位置上存
	放的元素并没有复制。

	*/


	//二〇一五年二月五日 01:50:36  好了晚上2点了。我要学lua了.早上还要上班,呵呵/很多内容还没写出来,大家有什么要补充的可以说出来把。说了这么多。都是给像和我一样基础不是太好的人学习的。

	//by creat 2015-02-05 01:52:41 
	//by CapeJasmine

	system("pause");
}

 

Vector用法,新手专用;

标签:

原文地址:http://www.cnblogs.com/CapeJasmine/p/4273798.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!