C++六大部件

前言

大二暑假那年,闲着没事翻看了一本C++的教材,忘了书名叫啥了。因为翻看过C++,所以开学的时候没有选修这门课。后来为了考CCF,了解了容器的使用。再后来,大四那年,闲着没事,翻看了半本《C++ primer》。比较零碎,这个暑假以C++为专题,梳理下。

我先计划了一个星期的解设计模式:设计模式-笔记

再计划18天来了解下STL与泛型编程(期间玩了11天,余下七天学习,2021/8/9修):C++标准库(STL)与泛型编程

之后,去github上找个简单的C++小游戏源码阅读以收尾。

这篇博客的附录是重点。


C++ 六大部件

来源:C++标准库(STL)与泛型编程 - 侯捷

我们需要弄明白下面这张图的含义。

在这里插入图片描述

容器用以存储数据结构;算法通过迭代器操作容器;分配器用以管理代码相关内存;适配器的原理是适配器模式,将已有的接口转换成我们需要的接口。

仿函数是什么?我们google下,阅读C++ 仿函数可知:仿函数重写operator() 运算符,使类可以像函数一样使用。好处是其可以像函数一样使用,但是可以拥有自己的私有数据。

上面的代码我敲了一遍,我们一点点看。

#include <iostream>
#include <vector>
#include <memory>
#include <functional>
#include <algorithm>

using namespace std;

int main(void){
    int tmp[] = {1,2,3,4,5,6};
    vector<int,allocator<int>> vec(tmp,tmp+sizeof(tmp)/sizeof(tmp[0]));
    
    cout<<count_if(vec.begin(),vec.end(),not1(bind2nd(less<int>(),2)))<<endl;
    return 0;
}

首先,C++中遇见不清楚的内容,可以参考附录的方法。

附录

C++常用的官方网站isocppcplusplus.com - C++cppreference.com-zhgun-libstdc++: ContainersMicrosoft C++标准库llvm libc++

查手册,一般去官网查看,因为权威标准;查问题/缘由,我一般直接google,因为相对于官网的说明书,博客逻辑性比好。下面,我简述下上面几个C++站点的区别。

同一个C++标准可以有不同的实现。关于如何获取不同实现的C++标准库,可以参考如何获取 C++ 标准库的源码

上面列出了C标准库的三种实现。我当前的系统是Ubuntu20,同时安装了gcc和clang/llvm。我分别使用clang++ -vg++ -v编译相同C++程序,查看编译过程。我看到C++标准库在使用的时候,库代码都位于头文件/usr/include/c++中。 查看头文件里面的注释,可以看到头文件是GCC中实现的C++标准库。

遗留问题:clang/llvm实现的C++标准库和gcc实现的C++标准库区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

da1234cao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值