标签:
#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");
}
标签:
原文地址:http://www.cnblogs.com/CapeJasmine/p/4273798.html