当前位置: 首页 > news >正文

c++迭代器STL中的vector简单概述

c++迭代器STL中的vector简单概述

  • 1.c++迭代器的位置
  • 2.STL六大组件
  • 3.STL中for_each的使用
  • 4.STL中容器嵌套容器

1.c++迭代器的位置

在这里插入图片描述

2.STL六大组件

容器 算法 迭代器 仿函数 适配器 空间配置器

容器 : 存放数据
算法 : 操作数据
迭代器 : 容器和算法的桥梁
仿函数 : 为算法 提供更多的策略
适配器 : 为算法提供更多的参数接口
空间配置器 : 管理容器和算法的空间

3.STL中for_each的使用

for_each(容器起始迭代器 , 容器结束迭代器 , 自定义打印函数);

// STL中for_each的使用
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>//要使用for_each必须包含此头文件
using namespace std;


class Person
{
public:
    string name;
    int age;
    Person(string name, int age)
    {
        this->name = name;
        this->age = age;
    }
};

void myPrintf(Person &ob)
{
    cout << "name:" << ob.name << ",age:" << ob.age << endl;
}

int main()
{
    Person ob1("哈哈", 1);
    Person ob2("嘿嘿", 2);
    Person ob3("哼哼", 3);
    Person ob4("嘻嘻", 4);

    vector<Person> v;
    v.push_back(ob1);
    v.push_back(ob2);
    v.push_back(ob3);
    v.push_back(ob4);

    for_each(v.begin(), v.end(), myPrintf);

    return 0;
}

在这里插入图片描述

4.STL中容器嵌套容器

// STL中容器嵌套容器
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>//要使用for_each必须包含此头文件
using namespace std;



int main()
{
    vector<int>v1;
    vector<int>v2;
    vector<int>v3;

    v1.push_back(10);
    v1.push_back(20);
    v1.push_back(30);
    v1.push_back(40);

    v2.push_back(100);
    v2.push_back(200);
    v2.push_back(300);
    v2.push_back(400);    

    v3.push_back(1000);
    v3.push_back(2000);
    v3.push_back(3000);
    v3.push_back(4000);

    //定义一个vector,将v1,v2,v3存放进去
    vector< vector<int> >v;

    v.push_back(v1);
    v.push_back(v2);
    v.push_back(v3);

    //for循环遍历
    for( vector<vector<int>>::iterator it = v.begin();it!=v.end();it++ ){

        //*it == vector<int> v1 v2 v3
        for(vector<int>::iterator mit = (*it).begin();mit!=(*it).end();mit++){
            //*mit == int
            cout<<*mit<<" ";
        }
        cout<<endl;
    }
    return 0;
}

在这里插入图片描述

相关文章:

  • 不可重复读和幻读详解(必看!!!)
  • 2022eclipse下载安装与使用教程
  • 【云原生】zookeeper + kafka on k8s 环境部署
  • 【牛客刷题日记】— Javascript 通关秘籍
  • 深度学习项目部署遇到的错误【记录】
  • 解决无法获取到B站点赞数和播放量的解决办法
  • 【历史上的今天】9 月 19 日:世界上第一个表情符号;微软发布 Virtual PC;苹果 UI 扁平化的开始
  • lio-sam框架:后端里程计、回环、gps融合
  • 使用Eclipse创建一个简单的servlet项目
  • 【OpenCV】- 模板匹配(浩瀚星空只为寻找那一抹明月)
  • Python Apex Legends 武器自动识别与压枪 全过程记录
  • 程序里对象很深很大,可以用这个设计模式缓解一下
  • Seata 分布式事务 详解+使用
  • 前端马农:抢不到消费券,我还不会自己做一张吗
  • React基础-JSX事件绑定-事件传参
  • [ JavaScript ] 数据结构与算法 —— 链表
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • ECS应用管理最佳实践
  • Hibernate最全面试题
  • Java反射-动态类加载和重新加载
  • Java基本数据类型之Number
  • Linux快速配置 VIM 实现语法高亮 补全 缩进等功能
  • MySQL-事务管理(基础)
  • SpringBoot 实战 (三) | 配置文件详解
  • Xmanager 远程桌面 CentOS 7
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 携程小程序初体验
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 选择阿里云数据库HBase版十大理由
  • ​Java基础复习笔记 第16章:网络编程
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (k8s)Kubernetes本地存储接入
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (一)appium-desktop定位元素原理
  • .naturalWidth 和naturalHeight属性,
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 回调、接口回调、 委托
  • .Net各种迷惑命名解释
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .net最好用的JSON类Newtonsoft.Json获取多级数据SelectToken
  • /etc/apt/sources.list 和 /etc/apt/sources.list.d
  • @manytomany 保存后数据被删除_[Windows] 数据恢复软件RStudio v8.14.179675 便携特别版...
  • @RequestMapping处理请求异常
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [3D游戏开发实践] Cocos Cyberpunk 源码解读-高中低端机性能适配策略
  • [AX]AX2012开发新特性-禁止表或者表字段
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • [C#]调用本地摄像头录制视频并保存
  • [C++进阶]map和set的相关题目
  • [Codeforces] number theory (R1600) Part.11
  • [Excel VBA]如何使用VBA自动生成图表