苞米面 C++ 模板库,无需编译,直接包含头文件就可以。
所有模板类和算法都包含在 bmm 名字空间里,例如: bmm::recent。
需要 C++ 编译器,支持 C++17 标准,只依赖 C++ STL 标准模板库。
C++ STL 标准模板库
详细情况查看 doc/html 里的文档。
示例代码
#include <iostream>
#include <vector>
#include "bmm/recent.hpp"
#include "bmm/algo.hpp"
int main(int argc, const char *argv[])
{
bmm::recent<int> rec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
std::cout << "recent example begin" << std::endl;
std::cout << "before recent: ";
for (auto i : rec)
std::cout << i << " ";
std::cout << std::endl;
rec.push(50);
std::cout << "push 50" << std::endl;
std::cout << "after recent: ";
for (auto i : rec)
std::cout << i << " ";
std::cout << std::endl;
std::cout << "recent example end" << std::endl;
std::cout << std::endl;
std::cout << "algo example begin" << std::endl;
std::vector<int> vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int n = 3;
if (bmm::is_in(vec, n))
std::cout << "is_in: " << n << " is in vec" << std::endl;
else
std::cout << "is_in: " << n << " is not in vec" << std::endl;
int k = 10;
int add = 50;
std::cout << "if_in before: ";
for (auto i : vec)
std::cout << i << " ";
std::cout << std::endl;
bmm::if_in(vec, k, [add](int &i)
{ i += add; });
std::cout << "if_in " << k << " += " << add << ": ";
for (auto i : vec)
std::cout << i << " ";
std::cout << std::endl;
std::cout << "algo example end" << std::endl;
return 0;
}
结果
recent example begin
before recent: 10 9 8 7 6 5 4 3 2 1
push 50
after recent: 50 10 9 8 7 6 5 4 3 2
recent example end
algo example begin
is_in: 3 is in vec
if_in before: 1 2 3 4 5 6 7 8 9 10
if_in 10 += 50: 1 2 3 4 5 6 7 8 9 60
algo example end
所有模板类和算法都包含在 bmm 名字空间里,例如: bmm::recent
名称 | 文件 | 说明 |
---|---|---|
recent | <bmm/recent.hpp> | 最近使用的元素,类似于 最近使用的文件 |
名称 | 文件 | 说明 |
---|---|---|
is_in | <bmm/algo.hpp> | 判断 value 是否在容器中 |
if_in | <bmm/algo.hpp> | 如果 value 在容器中则,调用函数 __func 并返回 true,否则返回 false |
函数作用 计算两个tensor的矩阵乘法,torch.bmm(a,b),tensor a 的size为(b,h,w),tensor b的size为(b,w,m) 也就是说两个tensor的第一维是相等的,然后第一个数组的第三维和第二个数组的第二维度要求一样,对于剩下的则不做要求,输出维度 (b,h,m) 代码示例 >>> c=torch.randn((2,5)) >>> print(c) tens
函数作用:实现batch的矩阵乘法 计算两个tensor的矩阵乘法,torch.bmm(a,b),tensor a 的size为(b,h,w),tensor b的size为(b,w,h),注意两个tensor的维度必须为3. 代码示例 >>> c=torch.randn((2,5)) >>> print(c) tensor([[ 1.0559, -0.3533, 0.5194, 0.9526,
A:百度计算器的加法 时间限制: 1000ms 内存限制: 10000kB 描述 百度框计算中提供了计算器这个功能,模拟计算器中的复杂功能,我们最先需要解决的就是实现加法模块。今天就给你个机会,和百度计算器一样,计算一下十以内的加法吧。 输入 仅有一组数据,包含两个正整数,分别为a, b(0 <= a, b <= 10) 输出 一个正整数,暨输入a, b后对应的a+b的计算结果 样例输入 5 2
#软件开发2023笔面经# #小米# #23届找工作求助阵地# 面试官上来先介绍了一下岗位,是做自动驾驶的中间件的,然后让我做了个自我介绍。 问我能实习多久,问我研究生都学啥课程。我说了两门操作系统相关,开始了第一题。 1.线程会有自己独立的栈区吗?会有独立的堆区吗? 1.你了解 Linux 虚拟内存空间吗? 2.虚拟内存有什么好处? 3.两个进程 malloc 可能会返回一个值吗?会映射到一个物
模板是泛型编程的基础,它涉及以独立于任何特定类型的方式编写代码。 模板是用于创建泛型类或函数的蓝图或公式。 像迭代器和算法这样的库容器是通用编程的示例,并且是使用模板概念开发的。 每个容器都有一个定义,例如vector ,但我们可以定义许多不同类型的向量,例如vector 《int》或vector 《string》 。 您可以使用模板来定义函数和类,让我们看看它们是如何工作的 - 功能模板 此处显
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。 每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。 您可以使用模板来定义函数和类,接下来让我们一起来看看如何使用。 函数模板 模
面试部门为上海车机部门,本人为c++选手,个人项目:6.828操作系统项目,一个muduo库,一篇1区文章。 面试官态度很好,对我不熟悉或者答的不完整的问题都会做一些解答和拓展 问题: 1.介绍了一下论文。 2.网络库项目: 问了网络库的结构,线程池的管理,tcp连接的管理,事件轮训检测与分发。 介绍了一下所做的各类事件触发机制。 3.操作系统项目 操作系统是宏内核还是微内核。 bios到kern
#小米# 许愿hr# 40多分钟,面试官人挺好的,不过迟到了两分钟,整体就对着简历细问项目和说个人经历,终于有一次面试没问我为什么跨考了。 1、先自我介绍 2、研究方向(这能反映个人研究生经历,怎么没写?然后自己说了一通研究方向干啥了 ps:我要有好文章怎么可能不写,还不是我菜) 3、打过竞赛吗?(随便说了一下参加的水比赛) 4、介绍第一个项目,然后各个点细问,讲了有一会 5、多线程编程遇到过死锁
#小米# 大概40分钟左右,女面试官,人挺温柔的,总体就是项目+手撕 1、自我介绍 2、讲一下简历上项目(webserver):项目成果是什么大致讲一下、几个人做的? 3、读研期间方向,然后个人方向展开讲讲 4、研究生很本科专业不一样,为什么跨考?自己自学的吗? 5、讲一下另外一个嵌入式相关的项目?做了多久?碰到问题、难点、怎么解决的。这部分讲了挺久的。 6、研究生跨专业那你数据结构、操作系统自学