草庐IT

type1Vector

全部标签

c++ - 资源管理- vector 和指针

我需要存储ThirdPartyElm类型的元素序列,我使用的是std::vector(或std::array如果我需要一个固定大小的序列)。我想知道我应该如何初始化序列。第一个版本创建一个新元素,并且(如果我是对的)在将元素插入到序列中时创建该元素的拷贝:for(inti=0;i第二个版本存储一系列指针(或更好的c++11智能指针):for(inti=0;ielm(newThirdPartyElm());//initelm..my_vector.push_back(std::move(elm));//my_array[i]=std::move(elm);}哪个是最轻量级的版本?请突出显

c++ - 将 vector 成员变量返回给外部类的最佳方法

我正在尝试用C++编写LED灯条驱动程序。现在我有一个Strip类和一个Driver类(class);Strip类抽象出具有多个像素的LED灯条,而Driver类聚合了Strip数据放入单个缓冲区以通过UDP连接发送。相关部分类:classStrip{public:...???getPixelData();intgetPixelDataLength();protected:std::vectormPixelData;classDriver{public:...voidaggregateStrips();protected:vectormBuffer;serialize将所有红-绿-蓝像

c++ - Lambda 重新初始化 vector - 为什么它有效?

为什么下面的编译?vectorvec;autolambda=[vec(move(vec))](){//??};如何使用vec(move(vec))重新初始化已分配的vec变量?这不是调用移动构造函数吗?如果我写:vectorvec;vec(move(vec));这是无效的 最佳答案 这称为init-capture。它声明了一个新变量,它隐藏了上面的vec。它用于捕获lambda表达式中的仅移动类型:Aninit-capturebehavesasifitdeclaresandexplicitlycapturesavariableoft

C++ 重载歧义 : conversion versus promotion with primitive types

在这段代码中:voidf(floatf,longinti){cout有一个歧义。Checkitout!.但是,第二个参数是有符号整数。将int绑定(bind)到longint参数需要提升,但对于float,则需要转换。由于第一个参数是关于两个重载的完全匹配,所以它不算数。但是关于第二个参数,它在第一次过载(提升)上的排名优于在第二个(转化)上的排名。为什么会出现解析歧义,而不是选择第一个重载? 最佳答案 int到long是一个转换。short到int是一种提升。(有关积分促销的完整列表,请参阅[conv.prom]。)同理,floa

C++ 删除 vector 中的元素

intmain(){vectornewcustomer;newcustomer.push_back(newCustomer("III",123333,555));newcustomer.push_back(newCustomer("LOL",122222,444));newcustomer.push_back(newCustomer("PPL",121111,333));for(inti=0;igetName()getPhone()getID()所以我创建了一个名为customer的类,您可以插入新客户,getName返回姓名,getPhone返回电话号码,GetID返回ID,现在我想

c++ - 错误:使用已删除的函数'test::test (const test&) C++ 结合 vector

我有一个我不明白的问题。我有一个生成线程的类。一切都好。我制作了一个新对象-一切正常。如果我将这些存储在一个vector中以迭代我的代码将无法编译。我使用g++4.9i686。我制作了以下简短程序,它完全模拟了问题,因为真实代码相当广泛。如果有人可以澄清或给我一个对我的宠物项目非常有用的解决方案,因为我坚持这个。代码如下:#include#include#include#includeclasstest{public:test();voidsetstring(std::strings);~test(){}voidrunThread(){m_thread=std::thread(&tes

c++ - 将指针 vector 转换为对象 vector

我有这个vector:std::vectorfoo;我有一个具有以下签名的函数(我无法更改它):voidbar(std::vectorconst&);如何以最少的更改将foo传递给该函数?我目前的做法是:std::vectoranother_bar(bar.size());std::transform(std::begin(bar),std::end(bar),std::begin(another_bar),[](T*item){return*T;});我认为这里发生了很多不必要的复制。编辑:T不是模板化参数。它是一个特定的类型。 最佳答案

力扣报错runtime error: load of null pointer of type ‘int‘解决思路

记录本算法小白刷力扣的这道题遇到的报错349.两个数组的交集https://leetcode.cn/problems/intersection-of-two-arrays/出现报错的代码 /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*intersection(int*nums1,intnums1Size,int*nums2,intnums2Size,int*returnSize){inthash[1000]={0};intresult[1000];//交集是去重的,最多只有1000个数for(inti

c++ - 为什么 std::function 没有 function_type 或等效的成员类型?

来自here在我看来std::function没有function_type或等效的成员类型导出用于初始化它的实际类型。它有result_type,argument_type,以及first_argument_type和second_argument_type,但与上述类型完全不同。为什么它不提供这种类型作为其接口(interface)的一部分?肯定会有一个很好的理由,但我不知道是什么原因,所以我很想知道。因为我知道第一个问题是为什么需要它,好吧,想象一下我想做类似std::is_same::value的事情在sfinae评估中检查它们的基础类型是否相同,只要符号相同,它们包含不同的功

c++ - 如何删除 vector 中的重复项(不排序)C++

我有一个vector,用户可以输入一些字符串。我想保留用户输入的顺序,但删除任何重复的单词。我唯一能在网上找到的东西是排序和独特的,但由于我无法对vector进行排序,所以我被卡住了。预先感谢您的任何帮助。例如来自用户的输入->hellotheredogcathellocatbookvectorshouldhave->hellotheredogcatbook现在我只有...strings;vectormyVec;while(cin>>s){myVec.push_back(s);}{codetosortvector} 最佳答案 在您的