草庐IT

vector-like

全部标签

c++ - move std::vector 时是否需要保留容量?

考虑以下代码:std::vectorvec;vec.reserve(500);size_tcap=vec.capacity();std::vectornewVec=std::move(vec);assert(cap==newVec.capacity());在您遇到的几乎任何实现中,这都会起作用。我不在乎实现是做什么的。我想知道标准需要什么。move到vector的容量是否与原始容量相同?还是断言会触发? 最佳答案 从标准来看,move构造函数似乎不需要任何东西,但是正如@amaurea所说,如果move构造函数尝试分配或释放内存,它

c++ - move std::vector 时是否需要保留容量?

考虑以下代码:std::vectorvec;vec.reserve(500);size_tcap=vec.capacity();std::vectornewVec=std::move(vec);assert(cap==newVec.capacity());在您遇到的几乎任何实现中,这都会起作用。我不在乎实现是做什么的。我想知道标准需要什么。move到vector的容量是否与原始容量相同?还是断言会触发? 最佳答案 从标准来看,move构造函数似乎不需要任何东西,但是正如@amaurea所说,如果move构造函数尝试分配或释放内存,它

c++ - vector 是否知道在由一对迭代器初始化时首先保留?

考虑下面的代码。structMyData{MyData(constBYTE*pData,size_tuSize):bucket_(pData,pData+uSize){}std::vectorbucket_;};从一对迭代器初始化时,我的bucket_是否首先执行reserve?类似于vec.reserve(std::distance(begIter,endIter))。或者它只是简单地执行push_back或back_inserter_iterator::operator=?如果没有,我可能需要将其初始化为uSize为0,然后在构造函数block中执行memcpy_s。

c++ - vector 是否知道在由一对迭代器初始化时首先保留?

考虑下面的代码。structMyData{MyData(constBYTE*pData,size_tuSize):bucket_(pData,pData+uSize){}std::vectorbucket_;};从一对迭代器初始化时,我的bucket_是否首先执行reserve?类似于vec.reserve(std::distance(begIter,endIter))。或者它只是简单地执行push_back或back_inserter_iterator::operator=?如果没有,我可能需要将其初始化为uSize为0,然后在构造函数block中执行memcpy_s。

c++ - std::vector 作为模板函数参数

我想创建一个将std::vector引用作为参数的类方法,并且我想将它用于不同类型的数据。函数应该如下所示:voidsome_function(conststd::vector&vect){//dosomethingwithvector}我想用它来举例:std::vectorv1;some_function(v1);std::vectorv2;some_function(v2);我希望我的观点很清楚。我是否必须制作这样的模板方法:templatevoidsome_function(std::vector&vect){}或者我可以用其他方式吗?如果必须,请告诉我如何在类里面编写该方法。感

c++ - std::vector 作为模板函数参数

我想创建一个将std::vector引用作为参数的类方法,并且我想将它用于不同类型的数据。函数应该如下所示:voidsome_function(conststd::vector&vect){//dosomethingwithvector}我想用它来举例:std::vectorv1;some_function(v1);std::vectorv2;some_function(v2);我希望我的观点很清楚。我是否必须制作这样的模板方法:templatevoidsome_function(std::vector&vect){}或者我可以用其他方式吗?如果必须,请告诉我如何在类里面编写该方法。感

c++ - 将字符串解析为 int 的 vector

我有一个字符串,其中包含一些用空格分隔的整数。例如stringmyString="10152023";我想将其转换为整数vector。所以在例子中vector应该相等vectormyNumbers={10,15,20,23};我该怎么做?对不起,愚蠢的问题。 最佳答案 您可以使用std::stringstream.您将需要#include除了其他包括。#include#include#includestd::stringmyString="10152023";std::stringstreamiss(myString);intnum

c++ - 将字符串解析为 int 的 vector

我有一个字符串,其中包含一些用空格分隔的整数。例如stringmyString="10152023";我想将其转换为整数vector。所以在例子中vector应该相等vectormyNumbers={10,15,20,23};我该怎么做?对不起,愚蠢的问题。 最佳答案 您可以使用std::stringstream.您将需要#include除了其他包括。#include#include#includestd::stringmyString="10152023";std::stringstreamiss(myString);intnum

c++ - static_assert 可以检查类型是否为 vector 吗?

static_assert可以检查一个类型是否是一个vector吗?IE,一个int会提出断言,而vector不会。我正在考虑以下内容:static_assert(decltype(T)==std::vector,"Someerror") 最佳答案 是的。考虑以下元函数:#include#includetemplatestructis_vector{staticconstintvalue=0;};templatestructis_vector>{staticconstintvalue=1;};intmain(){printf("is

c++ - static_assert 可以检查类型是否为 vector 吗?

static_assert可以检查一个类型是否是一个vector吗?IE,一个int会提出断言,而vector不会。我正在考虑以下内容:static_assert(decltype(T)==std::vector,"Someerror") 最佳答案 是的。考虑以下元函数:#include#includetemplatestructis_vector{staticconstintvalue=0;};templatestructis_vector>{staticconstintvalue=1;};intmain(){printf("is