STL基础介绍

本笔记来自于哔哩哔哩《[侯捷]C++ STL 体系结构与内核分析–从平地到万丈高楼》,可以参考学习。

STL可以分为六个部分,各个部分的关系如下:
在这里插入图片描述
这里写一个包含了六个模块的小例子:

#include<vector>
#include<algorithm>
#include<functional>
#include<iostream>
using namespace std;
//一个包含了六个模块的小程序
void example1()
{
	int ia[6] = { 27,210,12,47,109,83 };//数组
	//以数组的头尾来建立容器,类型为int,适配器(分配内存用的)为int形
	vector<int, allocator<int>> vi(ia, ia + 6);
	//countf是计数算法,vi.begin()和vi.end()是迭代器。
	//not1是取反,bind2nd是把两个对象绑定,less<int>()是用来比较大小的,这里的意思是计算“小于40再取反”,即“大于40”的元素个数。
	cout << count_if(vi.begin(), vi.end(), not1(bind2nd(less<int>(), 40)));
}

包含关系如下:
在这里插入图片描述
运行结果截图:
在这里插入图片描述

重点说明迭代器:
c++迭代器中所有的标准都是“前闭后开”。
在这里插入图片描述
一个迭代器的小例子(请使用相同的头文件)

//迭代器的使用
void example2()
{
	int ia[6] = { 27,210,12,47,109,83 };
	vector<int, allocator<int>> vi(ia, ia + 6);
	//基本迭代器输出
	for (vector<int>::iterator iter = vi.begin(); iter != vi.end(); ++iter)
	{
		cout << *iter << " ";
	}
	cout << endl << endl;

	//C++11新语法
	for (int i : {1, 2, 3, 4, 5, 6, 7, 8, 9})
	{
		cout << i << " ";
	}
	cout << endl << endl;

	//使用智能指针输出
	for (auto elem : vi)
	{
		std::cout << elem << " ";
	}
	cout << endl;

	//智能指针作为引用
	for (auto& elem : vi)
	{
		elem *= 2;
	}

	//再次输出查看结果
	for (auto elem : vi)
	{
		std::cout << elem << " ";
	}
	cout << endl;
}

运行结果截图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值