C++
疯疯癫癫
这个作者很懒,什么都没留下…
展开
-
random shuffle
数组洗牌实现// random_shuffle.cpp#include <iostream>#include <vector>#include <ctime>void random_shuffle(std::vector<int>& v) { int n = v.size(); std::srand(std::time(0)); for (int i = n-1; i > 0; --i原创 2017-12-06 10:28:02 · 409 阅读 · 0 评论 -
C++ 使用 curl 发送 json 数据请求
用到的库:curlnlohmann/json假设现在 Client 想要获取 Person 喜欢的语言,需要发送 Person 的个人信息到 Server,Server 根据用户姓名返回他喜欢的语言。struct Book { std::string name;};struct Person { std::string name; int age; std:...原创 2018-09-06 07:49:20 · 5831 阅读 · 0 评论 -
invalid use of non-static member function
现在有一个 Object 类,它有两个方法:Recv 负责接收数据,并传递给 ProcessProcess 负责处理数据我们希望这个类接收完数据后启动线程去处理,不阻塞后面的其他业务逻辑。class Object { public: void Recv() { int a = 2; std::thread t(Process, a); // Do...原创 2018-09-06 18:26:07 · 49059 阅读 · 4 评论 -
C 调用 C++ 类
现在有个类Person,其中成员函数分别用于获取 name 和 age: - GetName() - GetAge()我们希望可以在 C 代码中调用 C++ 类的方法。person.hclass Person { public: Person(std::string name, int age); ~Person() {} const char *GetName...原创 2018-09-14 15:57:44 · 15540 阅读 · 1 评论 -
gRPC c++
准备工作Install grpc$ git clone -b $(curl -L https://grpc.io/release) https://github.com/grpc/grpc$ cd grpc$ git submodule update --init$ make && sudo make installInstall protobuf$ cd thir...原创 2018-10-31 21:37:51 · 3015 阅读 · 0 评论 -
cmake protobuf
一. 简介Protocol Buffers 是一种数据序列化的格式。特点是语言无关,平台无关。相比于 XML 的优势是更小,更快和更简单。适合数据存储或 RPC 数据交换,可用于通信协议。支持的语言包括:C++,C#,Dart,Go,Java,Python 等。二. 安装https://github.com/protocolbuffers/protobuf/releases因为这篇是...原创 2019-01-29 13:08:09 · 4885 阅读 · 0 评论 -
map 中结构体或指针做 key
文章目录一. 问题背景1.1. 问题描述1.2. 问题分析二. 解决方案2.1. 方案一2.2. 方案二三. 参考一. 问题背景1.1. 问题描述朋友今天问了一个关于 map 的问题,假设有个 Person 结构体如下:typedef struct { std::string name; int age;} Person;map 定义如下:typedef std::map&...原创 2019-02-16 01:33:32 · 5179 阅读 · 0 评论 -
编译 arm 版本 protobuf
文章目录准备下载编译参考准备$ sudo apt install autoconf automake libtool curl make g++ unzip git安装 arm 工具链$ sudo apt install gcc-arm-linux-gnueabihf下载下载 protobuf 和对应版本的 protoc$ wget https://github.com/prot...翻译 2019-03-19 21:36:34 · 3038 阅读 · 1 评论 -
C++ 返回值优化
文章目录背景Copy elision 和 RVO编译器无法优化返回值的场景参考背景使用函数返回非内置类型对象时总是担心因拷贝对象而带来的性能问题。因此经常使用方式一传递对象的引用作为函数的参数,然后在函数里为对象赋值,而不使用方式二方式一:void f(std::vector<int>& v) { // do some thing with v}方式二:s...原创 2019-05-20 21:20:59 · 2061 阅读 · 0 评论