草庐IT

EidosValue_Int_vector

全部标签

c++ - 用 stoi 声明的 Const Int 不被认为是 const

我使用CGAL编写了一个简单的测试程序,遇到了以下问题:点在上面定义为typedefK::Point_dPoint;但我认为这无关紧要。当我尝试按如下方式编译程序时:constintsize=10;PointP[size];g++这样做没有问题。如果我尝试编译:constintsize=stoi("10");PointP[size]出现以下错误error:variablelengtharrayofnon-PODelementtype'Point'(aka'Point_d>>>')为什么在从字符串中检索时将大小视为变量而不是常量? 最佳答案

c++ - 为什么调用 `int* Get()` 而不是 `const int& Get()` ?

我有一个B类,它有两个方法,一个返回指向成员变量的指针,另一个返回对该变量的常量引用。我尝试调用这些方法。在调用期间,我将返回值存储到相应的返回类型。我期望适当的返回类型最终会调用适当的方法,但我收到一个编译错误:error:invalidconversionfrom‘int*’to‘int’[-fpermissive]constint&refval2=b.Get();`Hereismycode:#includeclassB{public:int*Get(){return&x_;}constint&Get()const{returnx_;}private:intx_=0;};intma

c++ - 在不使用 std 的情况下如何使用 int32_t?

这是我的代码:#includeintmain(){int32_ti=5;std::cout这是输出:$clang++-std=c++11-pedantic-Wall-Wextrafoo.cpp&&./a.outi:5这是我的问题:C++标准似乎在std命名空间内的cstdint中定义了int32_t。在我的代码中,我既没有包含cstdint也没有使用std命名空间。为什么编译器不报错? 最佳答案 名字int32_t也出现在C库头文件的全局范围内stdint.h.这可能使它在C++中也全局可见。本节[Headers]说:...thec

c++ - 本身复制 vector

我看了this谈话(包括时间戳)。演讲者在这里说要进行此修改{1,2,3,4,5,6,7,8,9,10}->{1,2,3,1,2,3,4,5,9,10}他用了std::copy它崩溃了,所以你应该使用std::copy_backward相反。但根据我的经验,恰恰相反。https://wandbox.org/permlink/hDjMhubAg1vb1KZzintmain(){std::vectorv{1,2,3,4,5,6,7,8,9,10};std::copy(v.begin(),v.begin()+5,v.begin()+3);for(constauto&i:v)std::cout

c++ - 如何使用 range-v3 库从 std::vector 获取列 View 和行 View ?

将7x5矩阵展平为std::vector,我想使用EricNiebler的range-v3库查看列和行。到目前为止,我设法(有改进的余地)获得单行、单列和连接行的View。参见:https://wandbox.org/permlink/8o4RgSucF3zSNuPNstd::vectornumbers={00,01,02,03,04,10,11,12,13,14,20,21,22,23,24,30,31,32,33,34,40,41,42,43,44,50,51,52,53,54,60,61,62,63,64,};constsize_tn=5;//numberofcolumns//R

c++ - 如果方法是const,如何找到 vector 的中值?

我创建了一个名为Collect的方法,它将一堆值添加到vector中(如下所示)voidMedian::Collect(doubledatum){myVector.push_back(datum);}我需要创建一个方法来计算我在上述方法中收集到的vector中的所有值的中位数。函数定义写在下面/*Calculatesthemedianofthedata(datum)fromtheCollectmethod.*/doubleMedian::Calculate()const{}所以我知道我首先需要对vector进行排序才能找到中位数。以下是我的尝试:doubleMedian::Calcul

c++ - 我如何调整 erase-remove 习语来处理 vector 元组?

我有一个包含成员j、k和l的元组vector。我正在尝试调整erase-remove习语,以便在.k成员的值满足特定条件时我可以删除整个元组。我尝试使用标准的.erase(removeif())方法,其中谓词引用元组成员位置,但被告知相关vector类没有成员“k”。vec_list_iter_exp_out.erase(std::remove_if(vec_list_iter_exp_out.begin(),vec_list_iter_exp_out.end(),vec_list_iter_exp_out.k我希望如果vec_list_iter_exp_out包含以下假设值:vec_

c++ - 将 C++ 数组转换为 vector

这是我在Leetcode上找到的代码.但是我无法理解以下两行,尤其是*(&a+1)。结果显示数组a的拷贝。谁能对此做出一些解释?谢谢!inta[5]={0,1,2,3,4};vectorv4(a,*(&a+1)); 最佳答案 从数组构造vector时,您通常会遇到的示例通常如下所示:inta[5]={...};vectorv4(a,a+5);//orvector(a,a+sizeof(a)/int);//automaticallycalculatenumelemsinsidea上面的例子简单地表明你想用数组“a”中的所有元素构造一个

c++ - 我需要将 strtol 的结果转换为 int 吗?

以下代码在g++4.1.1和-Wall中不会给出警告。intoctalStrToInt(conststd::string&s){returnstrtol(s.c_str(),0,8);}我原以为会收到警告,因为strtol返回一个longint,但我的函数只返回一个普通的int。其他编译器可能会在这里发出警告吗?在这种情况下,我是否应该将返回值转换为int作为一种好的做法? 最佳答案 最好的方法是:longx=strtol(...);assert(x你需要limits.h和assert.h

c++ - 奇怪的错误 : cannot convert from 'int' to 'ios_base::openmode'

我正在使用g++编译一些代码。我写了以下片段:boolWriteAccess=true;stringName="my_file.txt";ofstreamFile;ios_base::open_modeMode=std::ios_base::in|std::ios_base::binary;if(WriteAccess)Mode|=std::ios_base::out|std::ios_base::trunc;File.open(Name.data(),Mode);我收到这些错误...知道为什么吗?错误1:从“int”到“std::_Ios_Openmode”的无效转换错误2:初始化'