当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

bmm-cpp

苞米面 C++ 模板库
授权协议 Mulan
开发语言 C/C++
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 鲁昕
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

苞米面 C++ 模板库

简介

苞米面 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

开源协议

MulanPSL-2.0

项目地址

GITEE    https://gitee.com/cnhemiya/bmm-cpp

  • 函数作用 计算两个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、研究生跨专业那你数据结构、操作系统自学