#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