c++
JasmineHah
学习学习学习
展开
-
socket通信read丢失数据可能原因
最近在csapp上看到read和write socket时内部缓冲约束和较长的网络延时会引起read和write返回不足值,对linux管道调用read和write时,也可能出现不足值。在网上查询了一下原因,stackoverflow上的这个解释感觉比较有道理这个人遇到的问题是,用python的时候,如果只是传输小数据(1000字节),read会得到正确的结果,但是如果传输比较大的数据,例如9500字节,最后只能得到1000多的数据。解释👇TCP是面向字节流的协议,数据以字节的形式进行传输,长原创 2022-04-13 20:13:37 · 2229 阅读 · 0 评论 -
6个技巧优化vector的使用
6个技巧来优化vector的使用参考自上述文章,内含实验细节,翻译拙劣,海涵提前初始化大小,避免反复扩容和拷贝比如在实验里,要存储1w个数据,预设大小比逐个push_back要快70%通常来说,vector扩容的方式是:分配一块新的存储区域,通常是原来的两倍把所有内容从原来的存储区,复制到现有存储区销毁destroy原存储区的内容释放deallocate旧内存 而且扩容会导致原有vector的迭代器,指针和引用全部失效。所以之后还需要做工作,更新这些内容。使用shri翻译 2022-03-20 21:55:35 · 880 阅读 · 0 评论 -
构造只能在堆上生成对象的类
rt我们希望,生成非动态分配对象的时候,编译器报错class Test {...}Test t1; // should be an errorTest *t2 = new Test(); // should work关键是将析构函数变为私有如果我们把析构函数声明为私有,那么生成非动态分配对象会引发编译器错误,因为一旦对象不再使用,编译器就需要把他们从栈上面移除。因为编译器不负责动态分配对象的释放(由程序员来干),所以编译器不会产生错误。为了防止内存泄露,我们需要创建一个友元函数,来执行释翻译 2022-03-12 13:49:53 · 56 阅读 · 0 评论 -
类中vector初始化|Vector declaration “expected parameter declarator“报错
问题写lc题目的时候,自定义了一个类,中间包含一个已知长度为26的vector问题代码如下:class tree{public: vector<char *> child(26, nullptr);}tada,报错了解决要在构造函数初始化列表中初始化变量!class tree {public: vector<tree *> child; tree():child(26, nullptr){}}这样就没问题了!stackoverflow解释传送门原创 2022-03-08 15:30:50 · 473 阅读 · 0 评论 -
vector push_back操作报segmentation fault(core dump)
长话短说如果具备以下属性本来没事突发bug+没有明显错误+vector简单操作出问题+换机器跑没问题试试重启把,我成了问题昨天敲代码,程序突然报segmentation fault,core dump最后一步一步采取cout方法定位到错误(因为程序本身编写特点,不方便用gdb调试定位源头是,因为不确定vector大小,所以采取先声明,后push_back的操作换电脑跑程序没问题,找了很久资料也没个解决办法最后决定重启...原创 2022-01-08 10:35:20 · 1698 阅读 · 0 评论 -
vector排序|vector多维数组排序|vector自定义排序|不改变相同元素相对顺序比较
vector<int>排序头文件:#include <algorithm>示例如下,默认升序#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int>vec{5,4,6,9,8,1}; sort(vec.begin(), vec.end());原创 2021-11-16 10:31:51 · 8165 阅读 · 2 评论 -
vector取size作为判断条件无法进入while/for循环
问题问题代码如下#include <iostream>#include <vector>using namespace std;int main() { // your code goes here vector<int>cost{1, 100, 1, 1, 1, 100, 1, 1, 100, 1}; int curr = -1; // 注意这里是负数 while(curr<cost.size()){ cout原创 2021-10-28 11:12:44 · 220 阅读 · 0 评论