💻
C++
  • C++学习指南
  • 第一章 基础入门
    • 1 C++初识
      • 1.1 Visual Studio 下载及安装
      • 1.2 第一个C++程序
      • 1.3 注释
      • 1.4 变量
      • 1.5 常量
      • 1.6 关键字
      • 1.7 标识符命名规则
  • 2 数据类型
    • 2.1 整型
    • 2.2 sizeof关键字
    • 2.3 实型(浮点型)
    • 2.4 字符型
    • 2.5 转义字符
    • 2.6 字符串型
    • 2.7 布尔类型 bool
    • 2.8 数据的输入
  • 3 运算符
    • 3.1 算术运算符
    • 3.2 赋值运算符
    • 3.3 比较运算符
    • 3.4 逻辑运算符
  • 4 程序流程结构
    • 4.1 选择结构
    • 4.2 循环结构
    • 4.3 跳转语句
  • 5 数组
    • 5.1 概述
    • 5.2 一维数组
    • 5.3 二维数组
  • 6 函数
    • 6.1 概述
    • 6.2 函数的定义
    • 6.3 函数的调用
    • 6.4 值传递
    • 6.5 函数的常见样式
    • 6.6 函数的声明
    • 6.7 函数的分文件编写
  • 7 指针
    • 7.1 指针的基本概念
    • 7.2 指针变量的定义和使用
    • 7.3 指针所占内存空间
    • 7.4 空指针和野指针
    • 7.5 const修饰指针
    • 7.6 指针和数组
    • 7.7 指针和函数
    • 7.8 指针、数组、函数
  • 8 结构体
    • 8.1 结构体基本概念
    • 8.2 结构体定义和使用
    • 8.3 结构体数组
    • 8.4 结构体指针
    • 8.5 结构体嵌套结构体
    • 8.6 结构体做函数参数
    • 8.7 结构体中const使用场景
    • 8.8 结构体案例
  • 第二章 核心编程
    • 9 内存分区模型
      • 9.1 程序运行前
      • 9.2 程序运行后
      • 9.3 new操作符
    • 10 引用
      • 10.1 引用的基本使用
      • 10.2 引用的注意事项
      • 10.3 引用做函数参数
      • 10.4 引用做函数返回值
      • 10.5 引用的本质
      • 10.6 常量的引用
    • 11 函数提高
      • 11.1 函数默认参数
      • 11.2 函数占位参数
      • 11.3 函数重载
    • 12 类和对象
      • 12.1 封装
      • 12.2 对象的初始化和清理
      • 12.3 C++对象模型和this指针
      • 12.4 友元
      • 12.5 运算符重载
      • 12.6 继承
      • 12.7 多态
    • 13 文件操作
      • 13.1 文本文件
      • 13.2 二进制文件
  • 第三章 提高编程
    • 14 模板
      • 14.1 模板的概念
      • 14.2 函数模板
      • 14.3 类模板
    • 15 STL初识
      • 15.1 STL的诞生
      • 15.2 STL基本概念
      • 15.3 STL六大组件
      • 15.4 STL中容器、算法、迭代器
      • 15.5 容器算法迭代器初识
    • 16 STL常用容器
      • 16.1 string容器
      • 16.2 vector容器
      • 16.3 deque容器
      • 16.4 评委打分案例
      • 16.5 stack容器
      • 16.6 queue容器
      • 16.7 list容器
      • 16.8 set/multiset容器
      • 16.9 map/multimap容器
      • 16.10 员工分组案例
    • 17 STL函数对象
      • 17.1 函数对象
      • 17.2 谓词
      • 17.3 内建函数对象
    • 18 STL常用算法
      • 18.1 常用遍历算法
      • 18.2 常用查找算法
      • 18.3 常用排序算法
      • 18.4 常用拷贝和替换算法
      • 18.5 常用集合算法
      • 18.6 常用算法生成算法
由 GitBook 提供支持
在本页
  • 1.vector存放内置数据类型
  • 2.Vector存放自定义数据类型
  • 3.Vector容器嵌套容器

这有帮助吗?

  1. 第三章 提高编程
  2. 15 STL初识

15.5 容器算法迭代器初识

了解STL中容器、算法、迭代器概念之后,我们利用代码感受STL的魅力

STL中最常用的容器为Vector,可以理解为数组,下面我们将学习如何向这个容器中插入数据、并遍历这个容器

1.vector存放内置数据类型

容器: vector

算法: for_each

迭代器: vector<int>::iterator

示例:

#include <vector>
#include <algorithm>

void MyPrint(int val)
{
	cout << val << endl;
}

void test01() {

	//创建vector容器对象,并且通过模板参数指定容器中存放的数据的类型
	vector<int> v;
	//向容器中放数据
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);

	//每一个容器都有自己的迭代器,迭代器是用来遍历容器中的元素
	//v.begin()返回迭代器,这个迭代器指向容器中第一个数据
	//v.end()返回迭代器,这个迭代器指向容器元素的最后一个元素的下一个位置
	//vector<int>::iterator 拿到vector<int>这种容器的迭代器类型

	vector<int>::iterator pBegin = v.begin();
	vector<int>::iterator pEnd = v.end();

	//第一种遍历方式:
	while (pBegin != pEnd) {
		cout << *pBegin << endl;
		pBegin++;
	}

	
	//第二种遍历方式:
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << endl;
	}
	cout << endl;

	//第三种遍历方式:
	//使用STL提供标准遍历算法  头文件 algorithm
	for_each(v.begin(), v.end(), MyPrint);
}

int main() {

	test01();

	system("pause");

	return 0;
}

2.Vector存放自定义数据类型

学习目标:vector中存放自定义数据类型,并打印输出

示例:

#include <vector>
#include <string>

//自定义数据类型
class Person {
public:
	Person(string name, int age) {
		mName = name;
		mAge = age;
	}
public:
	string mName;
	int mAge;
};
//存放对象
void test01() {

	vector<Person> v;

	//创建数据
	Person p1("aaa", 10);
	Person p2("bbb", 20);
	Person p3("ccc", 30);
	Person p4("ddd", 40);
	Person p5("eee", 50);

	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).mName << " Age:" << (*it).mAge << endl;

	}
}


//放对象指针
void test02() {

	vector<Person*> v;

	//创建数据
	Person p1("aaa", 10);
	Person p2("bbb", 20);
	Person p3("ccc", 30);
	Person p4("ddd", 40);
	Person p5("eee", 50);

	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++) {
		Person * p = (*it);
		cout << "Name:" << p->mName << " Age:" << (*it)->mAge << endl;
	}
}


int main() {

	test01();
    
	test02();

	system("pause");

	return 0;
}

3.Vector容器嵌套容器

学习目标:容器中嵌套容器,我们将所有数据进行遍历输出

示例:

#include <vector>

//容器嵌套容器
void test01() {

	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);
	}

	//将容器元素插入到vector v中
	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++) {

		for (vector<int>::iterator vit = (*it).begin(); vit != (*it).end(); vit++) {
			cout << *vit << " ";
		}
		cout << endl;
	}

}

int main() {

	test01();

	system("pause");

	return 0;
}

上一页15.4 STL中容器、算法、迭代器下一页16 STL常用容器

最后更新于4年前

这有帮助吗?