草庐IT

c++ - 为什么 float 和 int 的 std::pow 会调用此重载?

以下内容:#includeintmain(){floatbase=2.0f;floatresult=std::pow(base,2);return0;}在打开时触发-Wconversion警告。Wandbox似乎调用了std::pow的double重载,我希望选择float重载(与int指数被转换为float)。知道他重载的人能解释一下为什么吗? 最佳答案 自C++11起,混合参数pow将任何整数参数强制转换为double。混合参数函数的返回类型始终是double除非一个参数是longdouble然后结果是longdouble。[c

C++ 在 ‘value_type’ 中没有名为 ‘struct std::iterator_traits<int>' 的类型

你好。我正在尝试运行以下代码(仅用于培训目的):#include#includetemplate>classkont>typenamestd::iterator_traits::value_typefoo_test(typenamekont::iteratorb){return*b;}templatetypenamestd::iterator_traits::value_typeminimum(Iterb,Itere){Iterm=b;/*CODE*/return*m;}intmain(void){std::listx;x.push_back(10);x.push_back(100);

C++:将元组转换为类型 T

我正在尝试创建一个名为tuple_cnv的类,它带有一个(隐式)转换运算符以从元组构造任何对象(如C++17std::make_from_tuple函数),但具有递归性质,以这种方式,如果一个元组由其他元组组成,它会将任何“内元组”转换为tuple_cnv以允许递归就地构造目标类型:#include#include#include#includestructA{inti1,i2,i3;};structB{Aa1,a2;};templatestructtuple_cnv;templatestructtuple_cnv>{usingtuple_t=std::tuple;std::refer

c++ - std::unordered_map<int,float> 是否仍然需要散列整数才能得到值?

我想知道是否std::unordered_map仍然必须对给定的整数进行哈希处理才能得到该值,或者直接使用它。我需要每秒多次快速执行此操作,如std::hash不能保证是身份函数,我将如何重新定义它?(显然不使用STL并编写我自己的容器是可能的,但我怀疑我编写的容器是否会更有效率(可能慢得多,慢得多))。谢谢! 最佳答案 Iwouldliketoknowwhetherstd::unordered_mapstillhastohashthegiveninteger是的。Ineedtoperformthisoperationveryfas

c++ - 用双花括号初始化 vector :std::string vs int

在这个问题的回答中:Initializingvectorwithdoublecurlybraces表明vectorv={{"a","b"}};将调用带有initializer_list的std::vector构造函数和一个元素。因此vector中的第一个(也是唯一一个)元素将从{"a","b"}构造。这会导致未定义的行为,但这超出了这里的重点。我发现的是std::vectorv={{2,3}};将使用两个元素的initializer_list调用std::vector构造函数。造成这种行为差异的原因是什么? 最佳答案 类类型列表初始

c++ - Visual Studio 2017 - 错误 MSB6006 : "CL.exe" exited with code 2

使用VisualStudio2017构建项目时遇到此错误:errorMSB6006:"CL.exe"exitedwithcode2.这是我的代码:intmain(){constintWIDTH=800;constintHEIGHT=600;Bitmapbitmap(WIDTH,HEIGHT);unique_ptrhistogram(newint[Mandelbrot::MAX_ITERATIONS+1]{0});unique_ptrfractal(newint[WIDTH*HEIGHT]{0});//intfractal[WIDTH*HEIGHT]{0};for(inty=0;y问题似

c++ - 用鼠标在 OpenGL GLUT 中绘制多边形

我想在openGLGlut中通过鼠标交互绘制一个多边形,每次左键单击都将是一个顶点,并且将在每个顶点之间绘制一条线。单击鼠标右键时,多边形将关闭从最后一个顶点到第一个顶点绘制一条线。我想到了这个,但它似乎不起作用。voiddraw_polygon(intbutton,intstate,intx,inty){boolright_pushed=0;glClear(GL_COLOR_BUFFER_BIT);glBegin(GL_POINTS);if(button==GLUT_LEFT_BUTTON&&state==GLUT_DOWN){p1.x=x;p1.y=480-y;//ifrighti

c++ - 简单乘法后得到错误的结果 - C++

所以,需要做的是:输入一个实数,打印出它的小数点后前4位数字的和。例如:我输入5.1010。我到了需要将0.1010乘以10000才能成为整数的地步,但我得到的结果是1009而不是1010,之后一切都崩溃了。如果有人能向我解释为什么会这样,我将永远感激不已。#includeusingnamespacestd;intmain(){doublen;cout>n;if(n 最佳答案 您可以按如下方式简单地更改代码,然后它应该可以正常工作。n*=10000;intInteger=n;inti=4;intsum=0;while(i--){su

c++ - 有没有办法在不创建变量的情况下调用需要指针的函数?

我有这个函数调用:uint32_tfunc(uint32_t*a,uint32_tb)我想用这样的整数文字来调用它:func(0,b);其中b是一个uint32_t。有没有什么方法可以在不创建中间变量的情况下做到这一点?IE。我想避免这样做:uint32_ta=0;func(a,b); 最佳答案 辅助类:structint_ptr{intv;operatorint*(){return&v;}};intfoo(int*a,intb);voidbar(){foo(int_ptr{0},0);}这会导致构造一个临时int_ptr类,将其v

C++通过访问函数返回私有(private)二维数组

我有一个C++类,它有一个函数,该函数从同一类的另一个变量中获取二维数组,以便该数组的特定实例可以访问另一个变量。有问题的变量是一个二维数组。给定下面的代码,您将如何实现访问器函数来获取私有(private)二维数组变量。我的意图是让访问器返回二维数组,但我不知道要使用哪种返回类型。int[][]、int**、int*和int不起作用。classMyClass{public://getsprivatexvariablefromanotherMyClassvariablevoidproccessVar(constMyClass&aVar){//getandprocessthe2Darra