/*算法和数据结构都未能有一套标准,导致做了重复的工作
--------------为了统一江湖,诞生STL(standerd Template Library,标准模板库)
【组件概述】
base:容器 -->迭代器-->算法
六大组件: base+仿函数 适配器 空间配置器【容器】
序列式容器&关联式容器
区别:序列式是放的位置就是送的位置   关联式排序【算法】
质变算法&非质变算法
质变:拷贝、替换、删除、和原来不一样了
非质变:查找、遍历、最大值、技术【迭代器】
1、每个容器都有自己专属的迭代器
2、迭代器使用类似于指针
3、算法必须通过迭代器才能访问容器
4、双向迭代器++、 -- 、== 、!=、随机访问迭代器[n]、<、 <= 、> 、>= ...
*/
#include<iostream>
#include<vector>
#include<algorithm>//标准算法头文件
using namespace std;
//容器:vector
//算法:for_each
//迭代器:vector<int>::iterator
void myPrint(int val)
{cout<< val << endl;
}
void test_01()
{//创建一个容器vector<int> v;//向容器插入v.push_back(10);v.push_back(20);v.push_back(30);v.push_back(40);//10、20、30、40// |              |// v.begin()      v.end()//通过迭代器访问容器/*方式一vector<int>::iterator itBegin = v.begin();//起始迭代器 指向第一个元素vector<int>::iterator itEnd = v.end();    //结束迭代器 指向最后一个元素下一个位置while(itBegin != itEnd){cout << *itBegin << endl;itBegin++;}*//*方式二for (vector<int>::iterator it = v.begin();it != v.end();it++){cout << *it <<endl;}*//*方式三*/for_each(v.begin(),v.end(),myPrint) ;//回调函数}/*vector 存放自定义数据类型*/
class Person
{public:Person(string name ,int age){this->p_age = age;this->p_name = name;}int p_age;string p_name;
};
void test_02()
{vector<Person>v;Person p1("aaa",12);Person p2("bbb",65);Person p3("ccc",7);Person p4("ddd",6);Person p5("eee",88);v.push_back(p1);v.push_back(p2);v.push_back(p3);v.push_back(p4);v.push_back(p5);//遍历容器中的数据for(vector<Person>::iterator it = v.begin();it != v.end();it++){//cout << "name = " << (*it).p_name << (*it).p_age <<endl;cout << "name = " << it->p_name << it->p_age <<endl;}}
void test_03()
{vector<Person*>v;Person p1("aaa",12);Person p2("bbb",65);Person p3("ccc",7);Person p4("ddd",6);Person p5("eee",88);v.push_back(&p1);v.push_back(&p2);v.push_back(&p3);v.push_back(&p4);v.push_back(&p5);//遍历容器中的数据for(vector<Person *>::iterator it = v.begin();it != v.end();it++){cout << "name = " << (*it)->p_name << (*it)->p_age <<endl;}}/*vector 嵌套*/
void test_04()
{vector<vector<int>> v;// 创建小容器vector<int> v1;vector<int> v2;vector<int> v3;vector<int> v4;for (int i = 0;i<4;i++){v1.push_back(i+1);v2.push_back(i+2);v3.push_back(i+3);v4.push_back(i+4);}v.push_back(v1);v.push_back(v2);v.push_back(v3);v.push_back(v4);for(vector<vector<int>>::iterator it = v.begin();it != v.end();it++){//(*it)---vector<int>for (vector<int>::iterator vit = (*it).begin();vit!=(*it).end();vit++){cout << *vit << " ";}cout << endl;}
}
int main()
{test_01();test_02();test_03();test_04();system("pause");
}

27-【什么叫规矩 什么叫体统】标准模板库基础相关推荐

  1. 标准模板库(STL)学习指南之List链表

    本文转载自天极网,原文地址:http://www.yesky.com/255/1910755.shtml.转载请注明 什么是STL呢?STL就是Standard Template Library,标准 ...

  2. C++标准模板库STL

    目 录 1 STL 简介 ....................................................................................... ...

  3. C++提高编程----STL标准模板库-常用容器

    STL标准模板库(Standard Template Library)-常用容器 C++的,面向对象和泛型编程,目的就是提高代码的复用性:为了建立数据结构和算法的统一标准,诞生了STL 一.STL初识 ...

  4. 【跟学C++】C++STL标准模板库——算法详细整理(中)(Study18)

    文章目录 1.简介 2.STL算法分类及常用函数 2.1.变序算法(一) 2.2.1 初始化算法(2个) 2.2.2 修改算法(2个) 2.2.3 复制算法(6个) 2.2.4 删除算法(6个) 3. ...

  5. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  6. 提高C++性能的编程技术笔记:标准模板库+测试代码

    标准模板库(Standard Template Library, STL)是容器和通用算法的强效组合. 渐近复杂度:算法的渐近复杂度是对算法性能的近似估计.它是算法集到特定性能标准集的映射.如果需要对 ...

  7. C++中标准模板库std::vector的实现

    以下实现了C++标准模板库std::vector的部分实现,参考了 cplusplus. 关于C++中标准模板库std::vector的介绍和用法可以参考 https://blog.csdn.net/ ...

  8. C++中标准模板库std::pair的实现

    以下用C++实现了标准模板库中的std::pair实现,参考了 cplusplus 和 vs2013中的utility文件. 关于std::pair的介绍和用法可以参考: https://blog.c ...

  9. STL 简介,标准模板库

    作者:Scott Field 这篇文章是关于C++语言的一个新的扩展--标准模板库的(Standard Template Library),也叫STL.     当我第一次打算写一篇关于STL的文章的 ...

最新文章

  1. oracle database link mysql_oracle database link使用说明
  2. java垃圾回收system_java应用性能调优之详解System的gc垃圾回收方法
  3. 微软人工智能平台开源:利用《我的世界》测试AI软件
  4. 数字加字符串用,隔开
  5. 吴恩达 coursera AI 第四课总结+作业答案
  6. 工作利用NUnit进行调试
  7. 14.6 Spring MVC 测试框架(翻译)
  8. Spring Cloud整合Nacos实现动态配置
  9. 有什么好办法说服孩子不玩游戏?
  10. luaL_dofile和luaL_loadfile的区别
  11. java属性定义_Kotlin 真香系列:扩展函数和属性
  12. 如何胜任一个小型公司的技术总监?
  13. 同城交友小程序项目功能方案介绍
  14. 算法导论第三版 21.2-3习题答案
  15. 个人博客项目之editormd实现文章详情页面预览
  16. java kaptcha,java验证码组件kaptcha使用方法
  17. python能做什么软件?Python到底能干嘛,一文看懂
  18. 使用hardhat 开发以太坊智能合约-发布合约
  19. Python调用华为API进行图像标签
  20. 最新域名防红系统源码+实战搭建视频教程

热门文章

  1. RIME中州韵输入法引擎学习
  2. CAD图纸转Word文件,看看这个方法你会吗?
  3. Webpack,凉了
  4. MUI返回页面未能及时刷新数据问题的解决办法
  5. 一键清除docker缓存
  6. 【C/C++服务器开发】同步与异步、阻塞与非阻塞、同步调用和异步调用的概念
  7. 计算机没有用户管理,计算机管理没有本地用户和组怎么解决
  8. 【贵旅优品】贵旅空港黄果树
  9. 轻松解开手机锁屏密码!你值得学习!
  10. 智能水表的冷知识你都知道吗?