01 2022 档案
摘要:--本文为个人理解,如有错误,请批评指正 标准库stl::vector拷贝有几种方式: ① for(int i=0;i<v1.size();++i) {v1[i]=v2[i];} //法1,一个一个元素的复制② v1.assign(v2.begin(), v2.end()); // 法2,使用ass
阅读全文
摘要:总结: 解法一:加锁; 解法二:并发读写之前,固定vector的大小,避免动态扩容来达到lock-free; 另外:resize()和reserver()区别: resize(),预留内存,并调用构造函数; reserve(),只预留内存; 转载链接:https://www.zhihu.com/qu
阅读全文
摘要:对于函数的局部变量,会存储在所属线程的栈中; 而如果函数用到全局数据,如链表,是存储在堆上,那就存在数据安全问题,必须要对函数访问加锁。 可重入函数: 简单来讲,就是可以被中断的函数,也就是说,可以在这个函数执行的任何时刻中断它,转入OS调度下去执行另外一段代码,而返回控制时不会出现什么错误;而不可
阅读全文
摘要:1 #include <iostream> 2 #include<thread> 3 #include <ctime> 4 #include<chrono> 5 6 using namespace std; 7 8 #define NAME_LINE 40 9 10 11 volatile cloc
阅读全文
摘要:C++中,变量的初始化,有{}和()两种,但应该尽量用{},而非()。因为使用()可能和函数声明相混淆,如 1 bool isTrue(); // 返回值为bool类型,形参为空的函数的声明; 2 bool isTrue{}; 并且,类的成员函数在声明同时初始化时,必须用{},否则编译错误: 1 b
阅读全文
摘要:拖了这么久,终于才开始搞多线程。 毕设中用的算法是GA+Local Search(memetic),算法时间太长,而local search部分花费了大量的时间,于是考虑用多线程的方法来加快该步骤的计算速度。 找到一个入门教程(C++ 多线程 | 菜鸟教程 (runoob.com)),是window
阅读全文
摘要:<C++代码调试> 今天调试上周写的我遗传算法的代码,遇到两个3个问题: 1.重载函数的参数写错了,导致用了错误的函数; 2.vector和list的复制,采用“=”,替换成了.assigen(iter_begin(), iter_end())。但是好像“=”也没有问题,需要后续测试一下! 3.关于
阅读全文