草庐IT

vector-class-library

全部标签

c++ - 警告 : base class ‘A’ should be explicitly initialized in the copy constructor

我有以下类结构:classA{A(){}A(constA&src){}};classB:virtualA{B():A(){}B(constB&src):A(src){}};classC:virtualA{C():A(){}C(constC&src):A(src){}};classD:virtualB,virtualC{D():B(),C(){}D(constD&src):B(src),C(src){}};这给了我警告:Incopyconstructor‘D’:warning:baseclass‘A’shouldbeexplicitlyinitializedinthecopyconstr

c++ - 交换 std::vector 作为函数参数

我想交换一个std::vector作为函数参数,这样就不必复制vector。像这样:function(std::vector().swap(my_vector));或者在我的例子中是这样的:std::make_pair(0,std::vector().swap(my_vector));当然std::vector::swap返回void,而不是创建的vector。有办法吗? 最佳答案 使用任何现代编译器,然后您可以使用std::move,它获取您的vector并将其作为右值返回:function(std::move(my_vector

c++ - Visual Studio 忽略 "Additional Library Directories"字段

我有几个我需要使用的库,但我遇到了一个不寻常的错误,这是发生了什么。我创建了一个新项目,并且一如既往地进入properties>Linker>Input以添加额外的依赖项。然后我进入Linker>General并将它们的位置包含在其他库目录下。问题是无论我做什么,VisualStudio似乎都忽略了额外的库目录字段,尽管我在命令行中正确地看到了它。结果,我收到无法打开库(LNK1104)错误。当我将路径放在库旁边并检查拼写错误时,一切正常。我还尝试移动库并提供替代路径,但一切都指向visualstudio,只是忽略了该字段。更奇怪的是,我还有另一个项目,在这个项目中一切正常。有没有人知

c++ - 在 C++ Eigen 库中转换 vector 数组

开始使用Eigen数学库,我在完成一个非常简单的任务时遇到了麻烦:使用四元数转换一系列vector。似乎我所做的一切都没有找到operator*,或者将数组与矩阵混合。Eigen::Quaternionfrot=…;Eigen::Array3Xfseries=…;//expectedthistoworkasmatrix()returnsaTransformation:series.matrix().colwise()*=rot.matrix();//expectedthesetoworkasit'sstandardnotation:series=rot.matrix()*series.

c++ - vector.size() 的 GDB 错误值

一个简单的vector.push_back()导致我的代码出现一些错误:#includeusingnamespacestd;intmain(intargc,constchar*argv[]){vectorstack;stack.push_back(1);stack.push_back(1);//stack.size()becomes467369971afterthisstack.push_back(1);stack.push_back(1);...morepush_back()s...return0;}我正在使用GDB检查它的行为...奇怪的是stack.size()在第二个push_

c++ - 插入 vector

我认为这段看似无辜的代码相当危险的想法是否正确?templatevoidinsertLast(std::vector&v){if(v.empty())return;v.insert(v.begin(),v.back());}阅读一些答案后的一些澄清..好吧,我并不是真的在问如何将一个元素插入到一个vector中,而是我做了一个虚拟的情况来质疑一个原则。换句话说,你认为有必要制作一个拷贝吗(这里创建了一个临时的..并且保证对临时对象的const引用存在):templatevoidinsertLast(std::vector&v){if(v.empty())return;v.insert(

c++ - 如何使用 C++ STL 和 boost 判断两个排序 vector 是否相交

我有两个已排序的C++std::vector,没有重复项(您可以称它们为集合),我想知道它们是否相交。我不需要公共(public)元素的vector。我在这个问题的末尾使用boost“范围”库中的boost::set_intersection算法编写了代码(http://www.boost.org/doc/libs/1_50_0/libs/range/doc/html/range/reference/algorithms/set.html)。此代码避免构建公共(public)元素集,但会扫描vector的所有元素。是否可以在不使用循环的情况下使用boost和C++STL改进我的函数“相

c++ - 错误 : Undefined symbols for architecture x86_64 with classes

我是一名初学者,正在编写一个帮助我节食的有趣程序。该程序尚未完成,但在我编写时正在编译。我不断收到标题中提到的错误:Undefinedsymbolsforarchitecturex86_64withclasses我看过类似的问题,但它们都与模板和继承类有关,这与我的情况不同。我只是在宣布一个类(class),没什么特别的。我认为这与未正确定义类有关,但我无法弄清楚它是什么。这可能是我想念的愚蠢的东西,但我仍然被困住了。谢谢。#include#includeusingnamespacestd;classMeal{private:stringname;intprotein;intcarbs

c++ - gsl_vector 有 count_if 函数吗? C/C++

我正在使用gnu科学图书馆(GSL)。假设我有一个像这样的gsl_vector:70-658010-2这是一个包含正数、负数和零作为元素的vector。我想统计这个gsl_vector中非零元素或零元素的个数。我知道C++Vector有一个名为count_if的函数。但是我搜索了gsl_vector.h和gsl_blas.h,没有能与之匹敌的功能。我可以通过gsl_vector_get()评估它们来遍历所有元素,然后问if问题。intcounter=0;for(inti=0;i但是我想了将近一天,GSL中是否已经有这样一个效率更高的函数。或者gsl_array有一个count_if函数

c++ - 如何正确调整 vector 大小?

来自thisanswer:Oneplacewhereyoucanrunintoaperformanceissue,isnotsizingthevectorcorrectlytobeginwith.那么,当vector是一个类的属性时,如何正确调整其大小呢?是否有(最佳)方法来设置vector的容量(在初始化时)? 最佳答案 是的。查看reserve方法。它将要求vector的容量至少足以包含作为其参数发送的元素数。如果您可以预期要存储在vector中的项目数的上限,那么您可以在vector中保留该数量的空间。上面链接的例子-//ve