// ============================================================================ // p1c09_02_01 — 2.4 案例 // 来源:川大 C++/LinuxC wiki「02.Qt方向」 // 说明:本文件由 gen_part1.py 合并页面中的教学片段而成。每个片段用 // // --- 原文片段 [pageId:blockIdx] --- 标注出处。 // 已做最小修正(笔误/平台移植),详见 docs/ERRATA.md。 // ============================================================================ #include using namespace std; #include #include static inline void pause() { printf("按回车键继续..."); (void)getchar(); } // --- 原文片段 [58954487:0] 2.4 案例 --- #define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std; //STL 中的容器 算法 迭代器 void test01(){ vector v; //STL 中的标准容器之一 :动态数组 v.push_back(1); //vector 容器提供的插入数据的方法 v.push_back(5); v.push_back(3); v.push_back(7); //迭代器 vector::iterator pStart = v.begin(); //vector 容器提供了 begin()方法 返回指向第一个元素的迭代器 vector::iterator pEnd = v.end(); //vector 容器提供了 end()方法 返回指向最后一个元素下一个位置的迭代器 //通过迭代器遍历 while (pStart != pEnd){ cout << *pStart << " "; pStart++; } cout << endl; } //STL 容器不单单可以存储基础数据类型,也可以存储类对象 class Teacher { public: Teacher(int age) :age(age){}; ~Teacher(){}; public: int age; }; void test02(){ vector v; //存储 Teacher 类型数据的容器 Teacher t1(10), t2(20), t3(30); v.push_back(t1); v.push_back(t2); v.push_back(t3); vector::iterator pStart = v.begin(); vector::iterator pEnd = v.end(); //通过迭代器遍历 while (pStart != pEnd){ cout << pStart->age << " "; pStart++; } cout << endl; } //存储 Teacher 类型指针 void test03(){ vector v; //存储 Teacher 类型指针 Teacher* t1 = new Teacher(10); Teacher* t2 = new Teacher(20); Teacher* t3 = new Teacher(30); v.push_back(t1); v.push_back(t2); v.push_back(t3); //拿到容器迭代器 vector::iterator pStart = v.begin(); vector::iterator pEnd = v.end(); //通过迭代器遍历 while (pStart != pEnd){ cout << (*pStart)->age << " "; pStart++; } cout << endl; } //容器嵌套容器 难点(不理解,可以跳过) void test04() { vector< vector > v; vectorv1; vectorv2; vectorv3; for (int i = 0; i < 5;i++) { v1.push_back(i); v2.push_back(i * 10); v3.push_back(i * 100); } v.push_back(v1); v.push_back(v2); v.push_back(v3); for (vector< vector >::iterator it = v.begin(); it != v.end();it++) { for (vector::iterator subIt = (*it).begin(); subIt != (*it).end(); subIt ++) { cout << *subIt << " "; } cout << endl; } } int main(){ //test01(); //test02(); //test03(); test04(); pause(); return EXIT_SUCCESS; } // --- main ---