C++
软件工程小施同学
区块链、DevOps、小程序、软件工程
展开
-
C++ 保留2位小数
【代码】C++ 保留2位小数。原创 2023-08-07 18:28:36 · 3550 阅读 · 0 评论 -
C++ 迭代器失效 ++报错
时,迭代器的指针会被释放掉,从而不能继续使用,如果继续使用,则会报错。erase,insert等函数。迭代器失效,迭代器++报错。原创 2023-01-01 17:10:26 · 758 阅读 · 0 评论 -
C++ 字符串如何转数字
返回值:该函数将转换后的浮点数作为双精度值返回。如果无法执行有效的转换,则该函数将返回零(0.0)。返回值:该函数将转换后的整数返回为long long int。如果无法执行有效的转换,则返回零。返回值:该函数将转换后的整数返回为long int。返回值:该函数将转换后的整数返回为 int。参数:该函数接受一个强制性参数str,它是浮点数的表示形式。参数:该函数接受强制性参数str,它是整数的表示形式。参数:该函数接受一个强制性参数str,它表示整数。参数:该函数接受一个强制性参数str,它表示整数。原创 2022-12-25 09:40:33 · 2555 阅读 · 0 评论 -
C++ string 分割成 vector 分隔符
用boost的split。原创 2022-12-22 01:07:47 · 601 阅读 · 0 评论 -
C++ 使用boost库实现http client get操作
【代码】C++ 使用boost库实现http client get操作。原创 2022-12-17 21:57:57 · 965 阅读 · 0 评论 -
C++ include头文件之后为什么还要在编译的时候加--lxxx
你的意思是,#include 里只有申明,所以还需要在编译的时候加上-lxxx,把它的定义加载进来?c/c++分声明(有这个东西)和定义(这个东西具体是什么),声明放到头文件里,定义放到代码文件里,提供源代码或编译的库。我的问题是,为啥要加-lcurl参数编译呀,我之前自己写的头文件直接包含不就进来了[破涕为笑]有的实现把声明和定义都放到头文件里,这样只需要一个文件就可以了。我在代码的同级文件夹放了这个curl头文件,编译说找不到。我查了一下,说要加这个-lcurl参数编译。原创 2022-12-17 12:45:19 · 416 阅读 · 0 评论 -
Ubuntu C++ 调用http接口
更多的例子在这里 https://curl.haxx.se/libcurl/c/example.html。把libcurl4给purge后再重新装就好了。2. 安装curl库时报错。可以使用libcurl 库。原创 2022-12-17 02:10:11 · 587 阅读 · 0 评论 -
C++ #include expects “FILENAME“ or <FILENAME>
include 标签只能是 #include 或者 #include ""原创 2022-12-17 00:30:55 · 3320 阅读 · 0 评论 -
C++ map 如何清空 内存泄露
map自带的.clear()函数会清空map里存储的所有内容,但如果map值存储的是指针,则里面的值不会被清空,会造成内存泄漏,所以值为指针的map必须用迭代器清空。若需要多次使用同一个map,其中每次使用后都clear清空,多次之后,可能出现内存泄露,这是因为map的空间便没有释放,所以得使用swap清空。若是采用了智能指针,则无需单独delete,智能指针,会自动释放内存。如果值里面存的是值而不是指针的话直接clear()即可。二、map值存储的不是指针。一、map值存储的是指针。原创 2022-10-25 09:00:59 · 7962 阅读 · 0 评论 -
C++ tcmalloc::SLL_Next segmentation fault
模拟实际生产情况的测试代码,map中的value保存的是对象。C++ map数据清理clear效率及彻底释放内存_chenyulancn的博客-CSDN博客_c++ map 清空。我遇到的原因是,使用了一个map,使用clear清空,多次之后,map的空间便没有释放,所以得使用swap清空。原创 2022-10-24 20:35:49 · 1309 阅读 · 0 评论 -
内存问题 分类
C/C++等底层语言在提供强大功能及性能的同时,其灵活的内存访问也带来了各种纠结的问题。如果crash的地方正是内存使用错误的地方,说明你人品好。如果crash的地方内存明显不是consistent的,或者内存管理信息都已被破坏,并且还是随机出现的,那就比较麻烦了。• use after return:caller访问一个指针,该指针指向callee的栈内内存。• read invalid memory:读取非法内存,本质上也属于内存越界。• wild free:释放内存的参数为非法值。转载 2022-10-24 00:27:07 · 310 阅读 · 0 评论 -
C++ map删除所有元素 指针 泄露内存
map自带的.clear()函数会清空map里存储的所有内容,但如果map值存储的是指针,则里面的值不会被清空,会造成内存泄漏,所以值为指针的map必须用迭代器清空。如果值里面存的是值而不是指针的话直接clear()即可。C++|map删除所有元素的四种方法 值为指针最好用迭代器删除_奇树谦的博客-CSDN博客_c++ map清空。1.迭代器删除值为指针的map,一定要注意迭代器使用正确,一旦迭代器失效程序就会崩溃。3.调用clear()函数之前先把值里的指针的值通过迭代器delete。转载 2022-10-23 22:43:59 · 1153 阅读 · 0 评论 -
C++ multimap 查找指定的元素
multimap能够存储多个key相同的元素。那怎么遍历出key相同的元素。原创 2022-10-22 23:01:59 · 1466 阅读 · 0 评论 -
C++ 队列queue用法
2. 和 stack 一样,queue 也没有迭代器。访问元素的唯一方式是遍历容器内容,并移除访问过的每一个元素。1. 队列为空后,q.front仍然有值。原创 2022-10-12 12:30:12 · 1044 阅读 · 0 评论 -
C++ set less<int> greater<int>用法示例
greater :按set中的key递减。less :按set中的key递增。原创 2022-10-09 21:07:46 · 1006 阅读 · 0 评论 -
C++ boost::asio::io_service创建线程池thread_group简单实例
简介boost::asio提供了一个跨平台的异步编程IO模型库,io_service类在多线程编程模型中提供了任务队列和任务分发功能。io_service最常用的接口是:run, post, stop。run()会阻塞,直到:所有的任务已经完成并且没有任务需要分发处理...C++ boost::thread_group 编程_那年聪聪的博客-CSDN博客_boost thread_group。boost::asio::io_service创建线程池简单实例_guotianqing的博客-CSDN博客。转载 2022-10-07 18:22:12 · 978 阅读 · 0 评论 -
C++ 智能指针 shared_ptr、make_shared用法
三、若是定义在class中,则需要在class的构造函数中。一、使用shared_ptr条件。原创 2022-10-05 20:02:52 · 1188 阅读 · 0 评论 -
C++ error: ‘shared_ptr’ was not declared in this scope
1. 要使用C++ 11以上版本。2. 要包含下面的头文件。原创 2022-10-05 18:25:33 · 880 阅读 · 0 评论 -
C++ 得到map中最后一个元素
【代码】C++ 得到map中最后一个元素。原创 2022-09-30 10:55:59 · 7908 阅读 · 2 评论 -
C/C++ int运算结果转float/double 保留小数
在编程中,经常用到的一个结果转换就是两个int类型变量相除的结果为了保留精确度而转换为float或者double类型,但是这个地方最容易令人犯错误的是,如果使用如下的类型转换方式,转换时是将两个int。C/C++中int类型变量运算结果转float/double探究 - MK_筱雨 - 博客园。转载 2022-09-30 10:29:16 · 3794 阅读 · 0 评论 -
C++ struct结构体初始化
在C++里可以将结构体看作没有任何成员函数的对象,下面对C++结构体的几种初始化方法进行总结。C++结构体初始化方法_hhhcbw的博客-CSDN博客_c++结构体初始化。的对象,因此也可以使用构造函数进行初始化。c++ 中可以将结构体看作没有任何。转载 2022-09-23 16:42:18 · 793 阅读 · 0 评论 -
C++ string转int
C++ string转int原创 2022-06-28 16:35:23 · 939 阅读 · 0 评论 -
C++ 父类指针如何调用子类的变量和函数 虚函数virtual实例
问题:类A继承类B,父类B的指针如何调用子类A中的变量和函数?解决方案:在父类B类中定义虚函数 父类中有自己的实现,子类重新实现 virtual void Show(){ cout << "A::Show()" << endl;}2.父类没有实现,子类自己实现virtual void test(int num) = 0;完成代码参考如下#include<iostream...原创 2022-05-08 21:53:27 · 2540 阅读 · 0 评论 -
C++ set清空是clear 不是empty
clear(); // 清除所有元素empty(); // 如果集合为空,返回true原创 2022-04-28 10:02:15 · 2335 阅读 · 0 评论 -
C++ boost multiprecision类型转换 u256转double
double aa = _value.template convert_to<double>();https://www.boost.org/doc/libs/1_66_0/libs/multiprecision/doc/html/boost_multiprecision/ref/number.htmlConstructing and Interconverting Between Number Types - 1.58.0原创 2022-04-25 23:13:59 · 1241 阅读 · 0 评论 -
C++ multimap 用法总结 例子
#include <map> #include <string> #include <iostream> using namespace std; int main() { ///1. 初始化 multimap<int, string> mapStudent; multimap<int, string>::iterator iter, beg, end; ...转载 2022-04-22 21:26:38 · 603 阅读 · 0 评论 -
tbb concurrent_multiset/concurrent_set unsafe_erase() 崩溃
My code is as follows, I use .begin() to get the first element in the set, and it can be obtained correctly, but using .unsafe_erase(iterator) will often crash. Of course, the first line(WriteGuard) is a write lock.I don't know why this happens, can原创 2022-04-22 17:13:23 · 354 阅读 · 0 评论 -
C++ 复制指针所指向的对象 make_shared shard_ptr
// make_shared example#include <iostream>#include <memory> int main () { std::shared_ptr<int> foo1 = std::make_shared<int>(); *foo1=1; std::cout << "*foo1: " << *foo1 << '\n'; std::shared_ptr<i.原创 2022-02-28 21:22:16 · 1345 阅读 · 0 评论 -
C++ STL容器在for循环中删除迭代器 正确方法 it++正确吗
c++中STL容器vector/list/map/set/deque/string等删除元素的问题,迭代器容易出现以下错误,示例代码如下:std::vector<int> arrayList;...std::vector<int>::iterator it = arrayList.begin();for ( ; it != arrayList.end(); it++){ if (...) arrayList.erase(it);}显然若条...转载 2021-12-27 11:18:34 · 1014 阅读 · 0 评论 -
C++ 动态取变量
#include <stdio.h>#include <unordered_map>#include <iostream>using namespace std;int main(){ int a1 = 1; int a2 = 2; int a3 = 3; std::unordered_map<int, int*> tools; tools[1] = &a1; tools[2] .原创 2021-12-26 16:11:53 · 1464 阅读 · 0 评论 -
C++ 二维 map vector 赋值 遍历 实例 降序 倒序
#include <iostream>#include <map>#include <vector>using namespace std;int main() { std::map<int, std::vector<int>> count; count[44].emplace_back(1); count[44].emplace_back(1); count[2].emplace_back(2.原创 2021-12-26 10:33:04 · 1538 阅读 · 0 评论 -
C++ 动态命名和修改变量名 动态生成变量名 define
#include <stdio.h>#define SET_NAME(name) test##name int main(){ // 可以使用SET_NAME定义变量 int SET_NAME(1) = 1111; printf("%d\n",test1); int SET_NAME(2) = 22; printf("%d\n",test2); // 可以使用SET_NAME改变变量值 SET_NAME(2...原创 2021-12-25 16:47:32 · 4482 阅读 · 0 评论 -
tbb::atomic和std::atomic的区别 废弃
tbb::atomic已经被废弃,可以使用std::atomic替代https://www.intel.com/content/dam/develop/external/us/en/documents/tbbrevamp.pdftbb::atomicclass (as well as multiple obsolete and compatibility features) was deprecated in TBB 2019 U9 (for more information..原创 2021-12-22 10:30:59 · 727 阅读 · 0 评论 -
C++ for const& 是什么意思
被const修饰的变量表示一个常量,这个数是不能被改变的,否则会引起一个编译错误& 表示这个数的引用int b = 1;int const &a = b;//a++不可以。因为是常量b++;cout<<a<<endl;输出2c++中const&表示什么意思_百度知道...原创 2021-12-21 11:04:12 · 1268 阅读 · 0 评论 -
C++ 数字 4294967295是什么意思
通常用来表示一个无效的值4294967295为何32位最大的正整数不是4294967295而是2147483647? - 知乎原创 2021-12-18 20:55:02 · 3731 阅读 · 0 评论 -
gdb @entry= 是什么意思
调用函数时传入的参数值The @entry form refers to the value of the parameter when the function was entered. This isn't always available, but sometimes it is -- there is a DWARF extension for it, and GCC emits this when possible.c++ - difference between this .原创 2021-12-17 19:38:33 · 2208 阅读 · 0 评论 -
C++ Segmentation fault 一般原因
Program terminated with signal SIGSEGV, Segmentation fault.一般原因是,数组、vector下标越界原创 2021-12-17 17:26:33 · 1325 阅读 · 0 评论 -
C++ 引用 支持多级嵌套吗
支持#include<iostream>using namespace std;void fun2(int& a){ a = 10; cout << a << endl;}void fun1(int& a){ a = 5; fun2(a); cout << a << endl;}int main(void){ int a = 1; cou..原创 2021-12-16 17:05:44 · 1005 阅读 · 0 评论 -
C++ 多线程 同时读取同一个vector 线程安全 吗
一.问题概述两个线程,不加锁的情况下,一个线程读,一个线程写; 或者两个线程同时写,会导致进程崩溃。如果两个线程同时读,不加锁的情况也不会出现问题。二.示例代码#include <boost/thread.hpp>#include <vector>using namespace std;using namespace boost;vector<int> g_vec;void test(){ int a = 0;转载 2021-12-16 16:18:38 · 5453 阅读 · 0 评论 -
C++ std::vector 一维 二维数组 初始化 为0
一维vector<int>(列数, 0);二维vector<vector<int>> newOne(行数, vector<int>(列数, 0));原创 2021-12-16 10:40:06 · 2627 阅读 · 0 评论