草庐IT

vector-class-library

全部标签

C++ vector 无故调整大小

我有这段代码:#include#includeclassA{private:staticintx;public:A(){}~A(){++x;std::coutvectA(5);}当我运行它时,我希望它打印5行(即为vector中的5个元素中的每一个元素调用析构函数)但实际上输出是:destroyingA1destroyingA2destroyingA3destroyingA4destroyingA5destroyingA6嗯,奇怪...所以我将主要功能更改为:intmain(intargs,char**argv){std::vectorvectA(5);std::cout现在输出是:d

c++ - 调整原子 vector 的大小?

如何调整原子vector的大小?例如,以下代码无法编译:#include#include#includeintmain(){std::vector>v;v.resize(1000);//Problemhere!v[0]=1;return0;}错误:Infileincludedfrom/usr/local/gcc-4.8.1/include/c++/4.8.1/vector:62:0,frommain.cpp:2:/usr/local/gcc-4.8.1/include/c++/4.8.1/bits/stl_construct.h:Ininstantiationof‘voidstd::_

c++ - 依赖于另一个库的库上的 CMake 和 target_link_libraries

我正在使用CMake构建不同的C++库,整个事情可以总结如下:liba:不依赖于任何东西libb:依赖于a我现在需要创建一个依赖于b的库c。我只需要在b上链接c吗?或者在b和a上,因为b依赖于a?target_link_libraries(cb)还是target_link_libraries(cba)?谢谢 最佳答案 在你的代码构建库b中,你应该告诉CMakeb依赖于a:target_link_libraries(ba)然后,您的库/应用程序c可以仅链接到它使用的内容,而不必担心依赖项的依赖关系:target_link_librar

c++ - 如何从 1 :n in C++ (Armadillo)? 创建 vector

这么简单的问题,但我还没有在Armadillo的文档中找到答案。我正在寻找相当于Matlab的x=(1:n)的Armadillo/C++,其中n是一个数字,x因此是一个vector[1,2,3...,n-1,n]。 最佳答案 请关注this功能。vecv=linspace(1,N);生成一个从1开始到N结束的vector。它可以满足您的需求。 关于c++-如何从1:ninC++(Armadillo)?创建vector,我们在StackOverflow上找到一个类似的问题:

java - 是否有理由使用字符串 => 索引到 vector 的映射,而不是字符串 => 对象?

如果我有一个对象集合,我希望能够通过名称进行查找,我当然可以使用{string=>object}映射。是否有理由使用对象的vector以及{string=>此vector中的索引}伴侣映射?这些年来我看到很多开发者都这样做,我基本上不认为这是开发者不熟悉map或感到困惑的迹象。但最近几天,我开始反射(reflection)自己,我担心我可能会错过潜在的优化或其他东西,尽管我终生无法弄清楚哪些可以优化。 最佳答案 我能想到的原因有一个:除了按名称查找对象外,有时您还想尽可能高效地遍历所有对象。使用map+vector可以实现这一点。通

c++ - 使用 3 维 vector 的问题

如何在C++中使用3维vector?vector>>vec(1,vector>(1,vector(1,12)));当我尝试这样的事情时cout一切正常。问题是我只能更改最后一个元素。如果我尝试像这样访问第一个和第二个元素vec[0][1][0]=13;或者这个vec.push_back(vector>());vec[0].push_back(vector());v[1][0].push_back(13);我的程序崩溃了。如何在3dvector中添加和访问元素? 最佳答案 我永远不会做vector>>因为这样你有很多分配可能很昂贵。我

c++ - 如何将 unique_ptr 移出 vector<unique_ptr<Foo>>?

我想搬一个unique_ptr从一个vector>.考虑我的代码:#include#include#includeusingnamespacestd;classFoo{public:intx;Foo(intx):x(x){};~Foo(){cout>();foos.push_back(unique_ptr(newFoo(100)));foos.push_back(unique_ptr(newFoo(101)));foos.push_back(unique_ptr(newFoo(102)));//Printallcoutxxx我预计它会产生:Vectorsize:3100101102Re

c++ - 如何在 C++ 中表示线段的 vector 方程?

我正在处理计算机图形学。我想表示一条有两个端点的线,然后我想要我的Line2d类有一个返回Vector2d的方法对象。假设,我有以下类(class):structPoint2d{intx;inty;};然后,我可以很容易地用两点表示一条线段:classLineSegment2d{private:Point2dstart;Point2dend;public:......};根据定义,vector由大小和方向组成。classVector2d{private:Point2dp;public:doubleMagnitude(void);PointComponent(void);Vector2d

c++ - 不完整类型 'class Ui::dialog 的使用无效(QT 错误)

我想制作一个带有按钮的简单QT主窗口以打开第二个窗口或对话框。我从字面上遵循了QT链接“在您的应用程序中使用设计器UI文件”中的步骤,并遵循了单一继承示例。但是QT给出了4个错误,您将在下面看到一个快照。现在,我所做的是在Qt设计器中创建一个主窗口,然后我将第二个窗体添加到项目中,这将是单击按钮时的第二个对话框窗口。因为我手动创建了表单“mydialog.ui”,所以我添加了类“mydialog.h和mydialog.cpp”,并将“ui-mydialog”的标题放在源文件“mydialog.cpp”中。我不确定我错过了什么?代码如下:-mydialog.h#ifndefMYDIALO

c++ - 使用 C++ 的 OpenGL : vtable troubles when passing class array to glTexImage2d

我用floatr、floatg、floatb、floatalpha创建了一个类Color。它有一个带有虚拟析构函数的基类。我正在尝试将Color数组传递给opengl函数glTexImage2D,其中GL_RGBA组织类型为float(这将是一个数组{floatr,floatg,floatb,floatalpha}).这要求Color仅包含4个float(16字节大小)。但是,sizeof(Color)显示我的类有一个20字节的大小,因为Color的基类有一个vtable,感谢析构函数。如何保留我的vtable并将我的Color数组传递给glTexImage2D?