草庐IT

i_begin_int

全部标签

c++ - 使用连续无符号整数列表初始化 std::vector<unsigned int>

我想用一种特殊的方法来初始化一个std::vector这在我用作引用的C++书籍中有所描述(如果重要的话,UlrichBreymann的德语书籍'DerC++Programmer')。在那本书中有一个关于STL序列类型的部分,特别提到了list,vector和deque.在本节中,他写道,这种序列类型有两个特殊的构造函数,即如果X指的是这样一种类型,X(n,t)//createsasequencewithncopiesoftX(i,j)//createsasequencefromtheelementsoftheinterval[i,j)我想在unsignedint的间隔内使用第二个,即

外国钥匙说“无效”应该是int?

我正在构建一个问答站点,到目前为止,我有两个表(问题和答案)我需要答案表的ID字段成为问题表中的外键,因此我可以有多个与一个问题链接的答案。当我不将无效的php代码放置时,无法正常工作?这是我的桌子:createtableanswers(a_idintnotnullauto_increment,answervarchar(100)notnull,primarykey(a_id));createtablequestions(q_idintnotnullauto_increment,questionvarchar(100)notnull,a_idint,primarykey(q_id),forei

c++ - 如何强制 pow(float, int) 返回 float

重载函数floatpow(floatbase,intiexp)在C++11中被移除,现在pow返回一个double。在我的程序中,我正在计算很多这些(单精度),我对最有效的方法很感兴趣。是否有一些具有上述签名的特殊函数(在标准库或任何其他函数中)?如果不是,在任何其他操作(这将转换所有其他内容)之前将pow的结果显式转换为float是否更好(就单精度性能而言)转换成double)或者将iexp转换成float并使用重载函数floatpow(floatbase,floatexp)?编辑:为什么我需要float而不使用double?主要原因是RAM——我需要数十或数百GB,因此这种减少是巨

c++ - 最令人烦恼的解析阻止了类内初始化 std::vector<int>

这个问题在这里已经有了答案:Whycan'tmemberinitializersuseparentheses?(2个答案)关闭4个月前。C++11允许类内初始化:structFoo{std::vectorv{3};//vectorof3emptystrings};如果我们想在类中初始化一个intsvector,我们会得到其他东西:structFoo{std::vectorv{3};//vectorofoneelementwithvalue3};这个问题好像是语言的限制,asdiscussedinpreviousquestions.但是,如果这不是类内初始化,我们将能够使用圆括号而不是大

c++ - 为什么我应该更喜欢类中的 static constexpr int 而不是类级整数常量的枚举?

C++17更新:staticconstexpr变量是隐式内联,因此不需要外部定义。原始问题:假设我有一个常量列表,例如structCls{staticconstexprintN=32;staticconstexprintM=64;};这当然建议我为这些添加定义以避免可能发生的ODR使用问题,因此我需要:constexprintCls::N;constexprintCls::M;为什么应该我更喜欢这个structCls{enum:int{N=32,M=64};};这让我免于ODR使用的麻烦,因为N和M更真实地只是常量,而不是对象本身(如果这是标题,那就更重要了-only)并且更短。我可以

c++ - 为什么 std::tuple<int> 不能简单复制?

内置thisonlinecompiler,以下代码:#include#include#includeintmain(){std::cout>::value>::value>::value>::value输出:0000我在VisualStudio2015中得到了相同的结果。为什么会这样?POD类型的std::tuple,更不用说简单的std::pair,是否有正当理由不能被简单复制?我假设它们的实现提供了一些自定义赋值运算符,但它们与编译器生成的默认版本有何不同? 最佳答案 就琐碎的可复制性而言,对失败的原因是标准不要求复制/移动赋值

c++ - 不是从 .begin()ing 迭代一个 STL 容器并环绕

我有一个std::vector,为了简单起见,让我们说整数。std::vectorivec;ivec.push_back(1);ivec.push_back(2);...//omittingsomepushback's3to99ivec.push_back(100);迭代的标准方式是已知的std::map::iteratorit;for(it=ivec.begin();it!=ivec.end();it++)print();该迭代将打印1,2,3,...100。我想从预定义的索引开始遍历所有vector元素,而不是从it.begin()开始。我要打印3,4,5,6...99,100,1

c++ - 如何专门化 std::begin?

我正在尝试为自定义容器专门化std::begin。我这样做是因为我想对容器使用基于范围的for。这是我的:classstackiterator{…};classstack{…};#includetemplatestackiteratorstd::begin(stack&S){returnS.GetBottom();}我在begin特化的定义中遇到以下错误:Nofunctiontemplatematchesfunctiontemplatespecialization'begin'我做错了什么? 最佳答案 I'mtryingtospec

c++ - 解析一个 int(x) 参数

这是一个带有一个int参数的简单函数:voidf(intx){}f(42);这是另一个带有一个int参数的函数:voidg(int(x)){}g(42);现在让我们将x定义为一个类型:typedefintx;voidh(int(x)){}h(42);//warning:passingargument1of‘h’makespointerfromintegerwithoutacast(这是我用gcc4.8.2观察到的行为)解析器作者如何处理这种情况?似乎经典管道Lexer->Parser->SemanticChecker->...在这里不起作用。 最佳答案

c++ - 编译器错误 C4430 : missing type specifier - int assumed

这个问题在这里已经有了答案:Resolvebuilderrorsduetocirculardependencyamongstclasses(12个答案)关闭8年前。我有这个错误:“错误C4430:缺少类型说明符-假定为int。注意:C++不支持default-int”使用此代码示例://A.h#include"B.h"classA{B*b;..};//B.h#include"A.h"classB{A*a;//errorerrorC4430:missingtypespecifier-intassumed.};