草庐IT

vector_c

全部标签

c++ - Vector vs Deque 在中间插入

我知道deque在前端或末尾插入时比vector更有效,如果我们必须进行指针运算,vector会更好。但是当我们必须在中间执行插入时使用哪个?为什么。? 最佳答案 您可能认为deque会有优势,因为它将数据分解成block。然而,要在恒定时间内实现operator[],需要所有这些block的大小相同。在中间插入或删除元素仍然需要移动一侧或另一侧的所有值,与vector相同。由于vector更简单并且具有更好的缓存局部性,因此它应该领先。 关于c++-VectorvsDeque在中间插入

c++ - 使用删除和插入替换 vector 中的元素

voidreplace(vectormy_vector_2,stringold,stringreplacement){vector::iteratorit;for(it=my_vector_2.begin();it!=my_vector_2.end();++it){if(*it==old){my_vector_2.erase(it);my_vector_2.insert(it,replacement);}}}因此,我希望此函数用字符串替换替换vector中所有出现的旧字符串。但是当调用这个函数时,它根本不会改变vector。我不确定我是否正确使用了删除和插入功能。有什么想法吗?

c++ - 如何在 C++ 中用大小初始化 3 维 vector

例如,如果我们初始化vector>>f,每个方向的尺寸没有规定。所以,我想知道,我们应该插入什么命令来制作f大小为[3][4][5].我们使用新的还是其他的?谢谢你帮助我! 最佳答案 vector>>f(3,vector>(4,vector(5))); 关于c++-如何在C++中用大小初始化3维vector,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/19484103/

c++ - 通过指针访问 std::vector 元素与 end()

我需要能够通过指针访问(只读,不涉及调整大小或类似的东西)std::vector的元素。例如,std::vectorfoo(10);int*ptr_begin=&foo[0];到目前为止一切顺利,保证在当前标准(23.3.6.1)中工作:Theelementsofavectorarestoredcontiguously,meaningthatifvisavectorwhereTissometypeotherthanbool,thenitobeystheidentity&v[n]==&v[0]+nforall0因此我们可以使用指针访问vector的所有元素,因为它们存储在连续的内存块中。

c++ - 如何将 std::vector<vector> 转换为 void*

我想知道如何转换std::vector至void*,例如:std::vectorpixels_(w*h,background_color);现在我要转换pixels_至void*这样我就可以memcpypixels_.memcpy((void*)destinationBuffer->pixels_,(void*)sourceBuffer->pixels_,\sizeof(ColorData)*destinationBuffer->width_*destinationBuffer->height_);但是当我运行这段代码时,我得到一个错误:invalidcastfromtype‘std:

c++ - 如何在任一轴的 std::vector<std::pair<int, int>> 上找到 std::max_element?

如何找到这对std::vector>中的最大元素在任一轴上。让它成为样本对:0,10,21,11,21,42,23,1我尝试使用std::minmax_element():constautop=std::minmax_element(edges.begin(),edges.end());automax=p.second->first;但这只会生成第一列的最大元素,即3,但我想要任一列的最大元素,即4.我希望最大元素是任一列中的最高元素。 最佳答案 使用std::max_element使用自定义比较功能,例如:automax_pair

c++ - C++ 字符串和字符串 vector 的 C 实现

我有一些C++API,如下所示:API1(std::stringstr,std::vectorvecofstr);我想从C代码调用此API。我如何为此提供C包装器?std::stringstr=>Icanprobablyusechar*forstd::string&std::vectorvecofstr=>字符串vector的char*数组,如char*arrOfstrings[SIZE]; 最佳答案 这是相应的C头文件(及其C++实现)的样子:声明#ifdef__cplusplusextern"C"#endifvoidcAPI1(

C++:如何制作一个已经包含元素的 vector

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++:EasiestwaytoinitializeanSTLvectorwithhardcodedelementsHowtoinitializeavectorinc++我想知道是否有一种方法可以用已公布的元素制作vector..不必做:vectorv;v.push_back(3);v.push_back(5);v.push_back(1);等等,其中v={3,5,1},我想制作一个已经包含如下元素的vector:vectorv={3,5,1};因为将每个数字插入vector中需要大量工作。有捷径吗?

c++ - 如何使用 boost::spirit 将单词序列解析为 vector ?

我正在努力学习boost::spirit.例如,我试图将一系列单词解析为vector.我试过这个:#include#includenamespaceqi=boost::spirit::qi;intmain(){std::vectorwords;std::stringinput="thisisatest";boolresult=qi::phrase_parse(input.begin(),input.end(),+(+qi::char_),qi::space,words);BOOST_FOREACH(std::stringstr,words){std::cout这给了我这个输出:'thi

c++ - 初始化 3D vector 的最有效方法是什么?

我在C++中有一个3D字符串vector:vector>>some_vector我正在尝试的是找到一种快速的方法为其分配内存。我尝试用以下两种不同的方法来定义它:#include#include#includeusingnamespacestd;#defineDIM1100#defineDIM29#defineDIM3120intmain(){clock_tt1_start=clock();vector>>vec1(DIM1,vector>(DIM2,vector(DIM3)));clock_tt1_end=clock();doublediff1=(t1_end-t1_start)/d