草庐IT

n_vector

全部标签

c++ - unique_ptr<int[]> 还是 vector<int>?

如果不需要动态增长,不知道编译时缓冲区的大小,应该什么时候unique_ptr用来代替vector如果有的话?使用vector是否有显着的性能损失?而不是unique_ptr? 最佳答案 使用std::vector没有性能损失与std::unique_ptr.但是,替代方案并不完全等同,因为vector可以增长而指针不能(这可能是优点也可能是缺点,vector是否错误地增长了?)还有其他区别,比如值将在std::vector中初始化。,但如果你new他们就不会了数组(除非您使用值初始化...)。归根结底,我个人会选择std::vec

c++ - 为什么 std::foreach 不能与 std::vector<bool> 一起使用?

这个问题在这里已经有了答案:Whyisn'tvectoraSTLcontainer?(6个答案)关闭4年前。我有以下代码片段,它采用std::vectorlist并在所有vector元素中写入一个零。此示例运行良好。#include#include#includeintmain(){std::vectorlist{1,1,2};autoreset=[](int&element){element=0;};autoprint=[](intelement){std::cout如果我将vector类型从int更改为bool,代码将无法编译。#include#include#includeint

c++ - vector C++ 98 错误

所以我一直在阅读多本(并且很反感)c++书籍并学习vector,他们都告诉我要像这样定义一个vector:vectorv1={4,3,5};但是当我编译它时(我在代码块中使用gnugcc编译器)它出现了这个错误inc++98'v1'mustbeinitializedbyconstructornotby'{...}'andialsogetanotheroneunderneaththatthatsais:couldnotconvert'{4,3,5}'from'braceenclosedinitializerlist'to'std::vectorv1'如果你能帮助我,我将不胜感激。我确实包

c++ - Vector of Vector 如何在内存中对齐?

我理解为Setsizeofvectorofvectorsatruntime描述,可以将vectorofvector声明为vector>ref;然后调整第一级的大小ref.resize(i);并在第2级推送元素:ref[i].push_back(23);但是vector的vector如何在内存中对齐?对于简单的vector,它是一个容器,它的元素连续排列,就像一个array;但在vector的vector的情况下,我看不到图片。随着每个内部vector(vectorvector中的vector)大小的变化,vector的外部vector(vectorem>invectorofvector

c++ - 如何更改 vector 中元素的值?

我有这段代码,它从文件中读取输入并将其存储在vector中。到目前为止,我已经得到它给我vector内值的总和,并使用总和给出值的平均值。我现在想做的是学习如何再次访问vector并从vector的每个元素中减去一个值,然后再次打印出来。例如,一旦计算出总和和平均值,我希望能够在终端中重新打印每个值减去平均值。有什么建议/例子吗?#include#include#include#includeusingnamespacestd;intmain(){fstreaminput;input.open("input.txt");doubled;vectorv;cout>d){cout

c++ - 如何推回 vector 的 vector ?

我正在接受20行输入。我想用空格分隔每一行的内容并将其放入vector的vector中。如何制作vector的vector?我很难把它推回去......我的输入文件:Maryhadalittlelamblalalaupthehillthesunisupvector应该看起来像这样。ROW0:{"Mary","had","a","little","lamb"}ROW1:{"lalala","up","the","hill"}这是我的代码....stringline;vector>big;stringbuf;for(inti=0;i>buf){(big[i]).push_back(buf)

c++ - 为什么删除的移动语义会导致 std::vector 出现问题?

这个问题在这里已经有了答案:What'stheexactsemanticsofdeletedmemberfunctionsinC++11?(2个答案)关闭8年前。经过一些研究,我看到了C++11hasadefect带有要求类型可移动/可复制的分配器。我确定这是导致此问题的原因,但是我对已删除和未声明的移动语义之间的行为感到困惑。我有以下代码无法在MSVC12和Clang上编译:#includeclassCopyable{public:Copyable()=default;Copyable(Copyableconst&other):m_int(other.m_int){}Copyable

c++ - 在 C++ 中将两个具有相同长度的 int vector 转换为一个由 int 对组成的 vector

在C++中,如果我有两个intvector:A=[1,2,3,4];B=[1,2,3,4];我怎样才能将它们合并成一对vector:[(1,1),(2,2),(3,3),(4,4)]当然我可以用一个循环来做到这一点。但是我们可以使用合适的STL函数和迭代器来做到这一点吗? 最佳答案 你可以为此使用一个算法:std::vector>target;target.reserve(A.size());std::transform(A.begin(),A.end(),B.begin(),std::back_inserter(target),[

c++ - 无法制作固定大小数组的 vector ?

我有一个奇怪的问题vectortris;for(unsignedinti=0;i该代码片段应该将三角形带状索引列表分解为三角形索引,但不会在vs10下编译。想法? 最佳答案 不,除非您将数组包装到struct中或使用类似std::array的东西。裸C风格数组类型不可复制或赋值,这使得它没有资格用作标准容器元素。附言应该注意的是,C++11改用更精细的(按方法)方法来指定对容器元素类型的要求,而不是C++03使用的更广泛的方法。上述不合格声明基于C++03。我还没准备好说它对于C++11也是如此无条件地正确......但如果你坚持在

c++ - 创建一个包含两种不同数据类型或类的 vector

我正在尝试创建一个包含一个int和一个字符串的vector。这可能吗?例如我想要vectormyArr持有stringx="PictureThis" 最佳答案 您可以使用union,但还有更好的选择。您可以使用boost::variant获得这种功能:usingstring_int=boost::variant;std::vectorvec;要从变体中获取字符串或整数,您可以使用boost::get:std::string&my_string=boost::get(vec[0]);编辑好吧,现在是2017年了。您不再需要Boost有