c++
收集c++编程中常用的功能的demo
鸟哥01
这个作者很懒,什么都没留下…
展开
-
c++ 遍历map的三种方式
1、方法介绍1.1、基于范围的for循环for(auto &t : m){ cout<<"key:"<<t.first<<" value:"<<t.second<<endl;}1.2、普通for循环for(map<int,string>::iterator iter = m.begin(); iter != m.end(); ++iter){ cout<<"key:"<<ite原创 2021-10-04 21:10:05 · 24503 阅读 · 2 评论 -
c++数组的 堆初始化方式
【代码】c++数组的 堆初始化方式。原创 2023-09-23 18:12:58 · 103 阅读 · 0 评论 -
c++ 数组的 栈初始化总结
c++ 数组的 栈初始化总结原创 2023-09-23 17:46:35 · 163 阅读 · 0 评论 -
c++获取vector最后一个元素方法总结
c++获取vector最后一个元素方法总结方法一: return vec.at(vec.size()-1);方法二: return vec.back();方法三: return vec.end()-1; 注意:end指向末尾元素的下一个元素。方法四: return vec.rbegin();原创 2022-12-03 10:13:34 · 9842 阅读 · 0 评论 -
c++中 # 和 ## 的用法总结
【代码】c++中 # 和 ## 的用法总结。原创 2022-11-27 16:16:48 · 928 阅读 · 0 评论 -
Windows下gnu gmp编译
window下gmp编译原创 2022-10-08 22:06:20 · 972 阅读 · 0 评论 -
编译freecad出现错误 warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
编译freecad时出现错误:C:\mywork\FreeCAD\src\Mod\TechDraw\Gui\CommandExtensionDims.cpp(1,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失解决方法:参考https://docs.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-原创 2022-05-21 21:08:48 · 372 阅读 · 0 评论 -
windows下编译boost 1.79
1、下载源码。地址 https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/2、解压3、进入源码目录。cd boost_1_79_04、生成 b2.exebootstrap.bat5、编译全部b2 -a6、安装。(会安装到默认目录c:\Boost\,如果不想安装到默认目录可以用–prefix指定,具体可以用 b2 --help 查看)b2 install注:对于windows平台,boost官方也提原创 2022-04-28 20:29:11 · 902 阅读 · 0 评论 -
【c++】std::wstring和std::string相互转换
#include <string>#include <iostream>#include <locale>#include <codecvt> // 将 string 转为 wstring inline std::wstring to_wstring(const std::string& input) { std::wstring_convert<std::codecvt_utf8<wchar_t>> conv原创 2022-01-01 12:32:48 · 2416 阅读 · 0 评论 -
交换vector的两个元素(两种方法)
//by 鸟哥 //交换vector的元素的两种方法//有疑问请留言或加群 1032082534#include <iostream> // For standard streams#include <string> // For string class#include <vector>原创 2021-10-02 20:13:13 · 16179 阅读 · 0 评论 -
c++中删除map元素的三种方式
//删除map元素的三种方式//by 鸟哥 #include <iostream>#include <map>using namespace std;void printMap(const map<string, int>& students){ for (auto ii = students.begin() ; ii != students.end() ; ii++) { cout <<"姓名:"<原创 2021-09-25 18:26:21 · 23803 阅读 · 2 评论 -
c++中 使用自定义类做map的key.方式四:特化模板std::less
//使用自定义类做map的key.方式四:特化模板std::less#include <iostream>#include <map>using namespace std;class Tree{public: int height; int diameter; Tree(int h,int d){ height=h; diameter=d; } };template <> //fu原创 2021-09-25 17:39:34 · 665 阅读 · 0 评论 -
使用自定义类做map的key.方式三:定义比较类
//使用自定义类做map的key.方式三:定义比较类#include <iostream>#include <map>using namespace std;class Tree{public: int height; int diameter; Tree(int h,int d){ height=h; diameter=d; } };class CompareClass{ public:原创 2021-09-25 17:32:08 · 268 阅读 · 0 评论 -
c++中 使用自定义类做map的key.方式二:std::function
//使用自定义类做map的key.方式二:std::function#include <iostream>#include <map>#include <functional>using namespace std;class Tree{public: int height; int diameter; Tree(int h,int d){ height=h; diameter=d; }原创 2021-09-25 17:20:00 · 1369 阅读 · 0 评论 -
c++中 使用自定义类做map的key.方式一: 重载operator<()操作符
//使用自定义类做map的key.方式一: 重载operator<()操作符#include <iostream>#include <map>#include <string>using namespace std;class Tree{public: int height; int diameter; Tree(int h,int d){ height=h; diameter=d; }原创 2021-09-25 17:11:06 · 2002 阅读 · 0 评论 -
c++控制台程序等待用户输入,防止程序运行后直接退出
// 等待用户输入,防止程序运行后直接退出//qq群 1032082534#include <iostream>#include <cstdlib>int main(){ std::cout << "Hello!" << std::endl; std::cin.get(); //getchar();//也可以用这句}原创 2021-09-04 15:59:23 · 3682 阅读 · 0 评论 -
c++将整数转化为字符串的方法汇总
/******************************************************************************by 鸟哥qq群 1032082534c++将整数转化为字符串的方法汇总*******************************************************************************/#include <stdio.h>#include <cstdlib>#inclu原创 2020-11-13 12:34:48 · 9826 阅读 · 0 评论 -
c++核心指南--Philosophy
本节的规则非常笼统。理念规则摘要:P.1: 直接用代码表达思想P.2: 用ISO标准c++编写代码P.3: 明示意图P.4:理想情况下,程序应该是静态类型安全的P.5: 优先使用编译时检查而不是运行时检查P.6: 不能在编译时检查的内容应该可以在运行时进行检查P.7: 尽早捕获运行时错误P.8: 不要泄露任何资源P.9: 不要浪费时间和空间P.10: 优先使用不可变数据而不是可变数据P.11:封装凌乱的结构,而不是任其在代码中传播P.12:适当使用支持工具P.13: 适当使用支原创 2020-10-09 12:24:47 · 475 阅读 · 2 评论 -
c++核心指南--导论
In: 导论这是一套现代C++(目前是C++17)的核心指南,考虑了未来可能的增强和国际标准化组织技术规范(TSs)。目的是帮助C++程序员编写更简单、更高效、更易维护的代码。导论摘要:In.target: Target readershipIn.aims: AimsIn.not: Non-aimsIn.force: EnforcementIn.struct: The structure of this documentIn.sec: Major sectionsIn.target:翻译 2020-10-06 13:14:25 · 610 阅读 · 0 评论 -
将unique_ptr转换为shared_ptr
std::unique_ptr<std::string> name= std::make_unique<std::string>("zhang");std::shared_ptr<std::string> name2= std::move(name);注意:不能将shared_ptr转换为unique_ptr原创 2020-08-27 12:22:11 · 5622 阅读 · 2 评论 -
std::thread初始化(3)--函数对象
#include <iostream>#include <utility>#include <thread>#include <chrono>class poeple{public: void operator()() { std::cout << "baz operator()...\n"; ++n; } int n = 0;};原创 2020-08-22 22:23:57 · 428 阅读 · 0 评论 -
std::thread初始化(2)--类成员函数
#include <iostream>#include <utility>#include <thread>#include <chrono> class foo{public: void bar() { std::cout << "bar executing\n"; ++n; } int n = 0;}; int原创 2020-08-22 21:09:43 · 1443 阅读 · 0 评论 -
std::thread初始化(1)--普通函数
#include <iostream>#include <utility>#include <thread>#include <chrono> void f1(int n){ std::cout << "function f1\n"; ++n; } void f2(int& n){ std::cout << "function原创 2020-08-22 18:46:40 · 835 阅读 · 0 评论 -
std::string::data和std::string::c_str是同义词
c_str返回一个c风格的字符串(也就是一个字符数组的指针),这个数组包含std::string的内容,外加末尾的’\0’.data的功能和c_str相同。原创 2020-08-20 13:07:37 · 689 阅读 · 0 评论 -
关于std::lower_bound和st::upper_bound
std::lower_bound和st::upper_bound详细使用说明请看代码// #include <iostream>#include <cstdlib>#include <vector>#include <algorithm>//lower_bound的作用是返回第一个不满足比较操作的迭代器,如果序列是升序排列,则比较操作符只能是<或<=;如果是降序排列,比较操作符只能是>或>=////upper_bound原创 2020-06-30 14:29:17 · 767 阅读 · 1 评论 -
error C2872: byte: ambiguous symbol
windows下c++编译出现错误:error C2872: ‘byte’: ambiguous symbol原因 c++17引入了类型 std::byte,如果 代码中使用了using namespace std;则会出现编译错误。解决方案:去掉 using namespace std;原创 2020-06-06 11:44:11 · 2826 阅读 · 0 评论 -
vs2019下编译LibreCAD
1、编译环境:1.1、vs20191.2、Qt5.13.0-mingw 64位+qt creator 4.9.11.3、boost1.712、步骤:2.1、github里下载LibreCAD源码 LibreCAD-2.2.0-rc12.2、解压下载的源码压缩包2.3、在qt creator里打开LibreCAD-2.2.0-rc1/librecad.pro2.4、找到custom....原创 2020-04-17 21:10:12 · 2070 阅读 · 1 评论 -
windows下cppzmq简易使用指南
一、编译安装1、下载编译libzmq2、下载编译cppzmq详细步骤请参考 https://github.com/zeromq/cppzmq/tree/fix-msvc3、添加libzmq和cppzmq的include目录4、添加lib。静态库lib是libzmq-mt-sgd-4_3_2.lib,动态库lib是libzmq-mt-gd-4_3_2.lib如果是静态链接,需要定义宏ZM...原创 2020-04-15 20:34:31 · 3708 阅读 · 0 评论 -
编写visual studio生成事件脚本之复制文件
代码示例:cd $(solutiondir)cd ..copy /Y "Release\chrome_elf.dll" "$(outdir)chrome_elf.dll"copy /Y "Release\d3dcompiler_47.dll" "$(outdir)d3dcompiler_47.dll"代码解释:cd $(solutiondir)进入解决方案目录cd...原创 2020-04-15 09:56:58 · 487 阅读 · 0 评论 -
windows下用vs2019编译fltk 1.3.5
1、下载源码。下载地址https://www.fltk.org/software.php2、解压下载的压缩包。3、启动visual studio,打开 …/fltk-1.3.xxxx/ide/VisualC2010/fltk.sln4、构建5、构建完成后可以在目录 …\fltk-1.3.5-source\test 里找到所有测试程序注:详细的步骤可以参考源代码文件夹里的 READ...原创 2020-04-12 15:58:13 · 885 阅读 · 0 评论 -
c++代码示例及其他
0、基本语法0.1、c++11范围for 即:for (auto n : arr)0.2、c++中宏的字符化操作(#@)0.3、c++中宏的标记连接操作(##)0.4、c++中宏的字符串化操作(#)0.5、c++中 a++和++a的区别0.6、c++中的运算符的替代表示0.7、c++中同一作用域中的struct和函数可以重名0.8、c++字面量中的前缀和后缀0.9、C11中的通用...原创 2020-03-29 13:14:10 · 6109 阅读 · 1 评论 -
vc中类静态成员变量引起的链接错误: error LNK2001: 无法解析的外部符号
1、错误代码main.cpp#include <iostream>#include "a.h"using namespace std;int main(){ a::x=0; cout<<a::x<<endl; return 0;}a.hclass a{ public: static int x;}...原创 2020-03-28 11:20:27 · 1391 阅读 · 0 评论 -
函数模板引起的 LNK2005错误(gcc错误提示是 multiple definition)
1、错误代码a.h#ifndef a_h#define a_h#include <iostream>using namespace std;template<typename T>void f(T t){ cout<<t<<endl;}template<> void f(int i){ cout<...原创 2020-03-27 20:55:22 · 656 阅读 · 0 评论 -
c++容器返回最后一个元素的四种方法
//by 鸟哥 获取容器的最后一个元素//有疑问请留言或加群 1032082534#include <iostream>#include <vector>using namespace std;int main(){ vector<int> v{2,3,4,5,6}; // cout<<"方法一:v.at(v.si...原创 2020-03-25 17:49:16 · 8889 阅读 · 0 评论 -
c++ C2912 错误演示
//by 鸟哥 vs下的C2912 错误//有疑问请留言或加群 1032082534template <> void test(const int& p) {} //如果写在这里vs 会报C2912,gcc会报 error: 'test' is not a template functiontemplate <typename A> void test(c...原创 2020-03-24 18:43:08 · 708 阅读 · 0 评论 -
c++ shared_ptr 按引用传参不增加引用计数
//by 鸟哥 演示 shared_ptr 不增加引用计数的情况//有疑问请留言或加群 1032082534#include <iostream>#include <memory>using namespace std;void f(shared_ptr<int>& sp){ cout<<"按引用传参不增加引用计数:"...原创 2020-03-20 17:11:14 · 2625 阅读 · 0 评论 -
c++protobuf使用注意事项--1、不能在c++clr中使用
因为mutex不能用于clr。如果要用就要通过net接口原创 2020-03-17 21:46:11 · 345 阅读 · 0 评论 -
protobuf(c++)设置嵌套类的值的两种方法(set_allocated_和mutable_的使用)
.proto 文件如下:syntax = "proto3"; package geomproto;message Geom{ Point2d p=1;}message Point2d{ double x=1; double y=2;}设置Point2d成员的方式1:Geom geom;Point2d *tmp = new Point2d();...原创 2020-03-17 15:19:17 · 2733 阅读 · 2 评论 -
c++ 中的 参数依赖查找(argument-dependent lookup 简称 ADL)
//by 鸟哥 演示 参数依赖查找//有疑问请留言或加群 1032082534#include <iostream>using namespace std;namespace test{ class T{}; int sum(int a,int b,T t=T{}){ return a+b; }}void f(){ test...原创 2020-03-16 10:11:07 · 776 阅读 · 0 评论 -
c++中实现sleep的三种方式(跨平台)
1、stl方式//by 鸟哥 用stl实现sleep//有疑问请留言或加群 1032082534#include <iostream>#include <chrono>#include <thread>using namespace std;int main(){ cout<<"sleep前"<<endl; ...原创 2020-03-10 10:47:46 · 17580 阅读 · 3 评论