草庐IT

vector_tostr

全部标签

c++ - 如何根据对的第二个元素对对的 vector 进行排序?

如果我有一对vector:std::vector>vec;有没有简单的方法根据对中的第二个元素按递增顺序对列表进行排序?我知道我可以编写一个小函数对象来完成这项工作,但是有没有办法使用STL和std::less的现有部分来直接干活?编辑:我知道我可以编写一个单独的函数或类来传递给第三个参数进行排序。问题是我是否可以用标准的东西来构建它。我真的想要看起来像这样的东西:std::sort(vec.begin(),vec.end(),std::something_magic()); 最佳答案 编辑:使用c++14,最好的解决方案非常容易编

c++ - 如何反转 C++ vector ?

C++中是否有内置的vector函数来反转vector?还是只需要手动操作? 最佳答案 algorithmheader中有一个函数std::reverse用于此目的。#include#includeintmain(){std::vectora;std::reverse(a.begin(),a.end());return0;} 关于c++-如何反转C++vector?,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - push_back 来自同一 vector 的元素是否安全?

vectorv;v.push_back(1);v.push_back(v[0]);如果第二个push_back导致重新分配,则对vector中第一个整数的引用将不再有效。所以这不安全?vectorv;v.push_back(1);v.reserve(v.size()+1);v.push_back(v[0]);这样就安全了? 最佳答案 看起来像http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526将此问题(或与之非常相似的问题)作为标准中的潜在缺陷解决:1)Par

C++,复制集到 vector

我需要将std::set复制到std::vector:std::setinput;input.insert(5);input.insert(6);std::vectoroutput;std::copy(input.begin(),input.end(),output.begin());//Error:Vectoriteratornotdereferencable问题出在哪里? 最佳答案 您需要使用back_inserter:std::copy(input.begin(),input.end(),std::back_inserter(

c++ - 为什么 C++ vector 称为 vector ?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题吗?更新问题,以便editingthispost提供事实和引用来回答它.关闭3个月前。社区审核了是否重新打开这个问题3个月前并关闭:原始关闭原因未解决Improvethisquestion这个问题真的很不言自明。我对数学中的vector知之甚少,但我并没有真正看到与C++vector的链接。 最佳答案 之所以称为vector,是因为标准模板库的设计者AlexStepanov正在寻找一个名称来将其与内置数组区分开来。他现在承认他犯了一个错误,因为数学已经使用

c++ - 如何从具有特定值的 STL vector 中删除项目?

我正在查看STLvector的API文档,并注意到vector类上没有允许删除具有特定值的元素的方法。这似乎是一种常见的操作,而且没有内置的方法来执行此操作似乎很奇怪。 最佳答案 std::remove实际上并没有从容器中删除元素:它将要删除的元素移动到容器的末尾,并返回可以传递给container_type::erase的新结束迭代器实际删除现在位于容器末尾的额外元素:std::vectorvec;//..putinsomevalues..intint_to_remove=n;vec.erase(std::remove(vec.b

c++ - 通过保留和复制,还是通过创建和交换来复制 vector 更有效?

这个问题在这里已经有了答案:Copyingstd::vector:preferassignmentorstd::copy?(6个回答)关闭2年前。我正在尝试有效地制作vector的拷贝。我看到了两种可能的方法:std::vectorcopyVecFast1(conststd::vector&original){std::vectornewVec;newVec.reserve(original.size());std::copy(original.begin(),original.end(),std::back_inserter(newVec));returnnewVec;}std::v

c++ - 在 std::vector::erase() 和 std::deque::erase() 中复制/移动赋值

在回答过程中anotherquestion我偶然发现std::vector::erase()和std::deque::erase()的措辞略有不同。这就是C++14关于std::deque::erase的说法([deque.modifiers]/4-6,重点是我的):Effects:...Complexity:Thenumberofcallstothedestructoristhesameasthenumberofelementserased,butThenumberofcallstotheassignmentoperatorisnomorethanthelesserofthenumb

c++ - 分配 vector 时,它们使用堆上的内存还是堆栈上的内存?

以下所有说法都是正确的吗?vectorvect;//allocatesvectonstackandeachoftheType(usingstd::allocator)alsowillbeonthestackvector*vect=newvector;//allocatesvectonheapandeachoftheTypewillbeallocatedonstackvectorvect;//vectwillbeonstackandType*willbeonheap.如何在vector或任何其他STL容器中为Type内部分配内存? 最佳答案

c++ - 连接两个 vector 的最佳方法是什么?

我正在使用多线程并希望合并结果。例如:std::vectorA;std::vectorB;std::vectorAB;我希望AB必须按顺序访问A的内容和B的内容。做这样的事情最有效的方法是什么? 最佳答案 AB.reserve(A.size()+B.size());//preallocatememoryAB.insert(AB.end(),A.begin(),A.end());AB.insert(AB.end(),B.begin(),B.end()); 关于c++-连接两个vector的