草庐IT

new_size

全部标签

c++ - 我应该为 `size_t` 包含哪个 header ?

根据cppreference.comsize_t定义在几个头文件中,即而且,从C++11开始,也在首先,我想知道为什么会这样。这与DRY不矛盾吗?原理?在使用size_t时,我应该包含上述哪个header?有关系吗? 最佳答案 假设我想最小化我要导入的函数和类型,我会选择cstddef,因为它不声明任何函数,只声明6种类型。其他人专注于对您而言可能无关紧要的特定领域(字符串、时间、IO)。注意cstddef只保证定义std::size_t,即在命名空间std中定义size_t>,尽管它可能在全局命名空间中也提供此名称(实际上是普通的

c++ - 如何使 `new[]` 默认初始化原始类型数组?

我不时需要为内置类型(通常是char)调用new[]。结果是一个具有未初始化值的数组,我必须使用memset()或std::fill()来初始化元素。如何使new[]默认初始化元素? 最佳答案 int*p=newint[10]()应该可以。但是,如Michaelpointsout,使用std::vector会更好。 关于c++-如何使`new[]`默认初始化原始类型数组?,我们在StackOverflow上找到一个类似的问题: https://stackove

c++ - 如何使 `new[]` 默认初始化原始类型数组?

我不时需要为内置类型(通常是char)调用new[]。结果是一个具有未初始化值的数组,我必须使用memset()或std::fill()来初始化元素。如何使new[]默认初始化元素? 最佳答案 int*p=newint[10]()应该可以。但是,如Michaelpointsout,使用std::vector会更好。 关于c++-如何使`new[]`默认初始化原始类型数组?,我们在StackOverflow上找到一个类似的问题: https://stackove

c++ - 使用 new 运算符初始化数组

我想以使用逗号分隔花括号括起来的元素的格式初始化一个数组,例如:intarray[10]={1,2,3,4,5,6,7,8,9,10};但是,我需要使用new运算符来分配内存,例如:int*array=newint[10];有没有办法组合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组? 最佳答案 在新的C++标准(C++11)中,您可以这样做:int*a=newint[10]{1,2,3,4,5,6,7,8,9,10};它被称为初始化列表。但在以前的标准版本中这是不可能的。具有更多详细信息(并且很难阅读)的相关在

c++ - 使用 new 运算符初始化数组

我想以使用逗号分隔花括号括起来的元素的格式初始化一个数组,例如:intarray[10]={1,2,3,4,5,6,7,8,9,10};但是,我需要使用new运算符来分配内存,例如:int*array=newint[10];有没有办法组合这些方法,以便我可以使用new运算符分配内存并使用花括号初始化数组? 最佳答案 在新的C++标准(C++11)中,您可以这样做:int*a=newint[10]{1,2,3,4,5,6,7,8,9,10};它被称为初始化列表。但在以前的标准版本中这是不可能的。具有更多详细信息(并且很难阅读)的相关在

c++ - 在 C++ 中清理代码以 printf size_t(或 : Nearest equivalent of C99's %z in C++)

我有一些打印size_t的C++代码:size_ta;printf("%lu",a);我希望在32位和64位架构上编译时不会出现警告。如果这是C99,我可以使用printf("%z",a);。但是AFAICT%z在任何标准C++方言中都不存在。所以相反,我必须这样做printf("%lu",(unsignedlong)a);真的很丑。如果没有打印语言内置的size_t的工具,我想知道是否可以编写一个printf包装器或类似的东西,以便在size_t上插入适当的类型转换>s以消除虚假的编译器警告,同时仍然保持良好的警告。有什么想法吗?编辑澄清我使用printf的原因:我有一个相对较大的代

c++ - Malloc vs new——不同的填充

我正在为我们的项目审查其他人的C++代码,该项目使用MPI进行高性能计算(10^5-10^6核)。该代码旨在允许(可能)不同架构上的不同机器之间进行通信。他写了一条评论,内容大致如下:We'dnormallyusenewanddelete,buthereI'musingmallocandfree.Thisisnecessarybecausesomecompilerswillpadthedatadifferentlywhennewisused,leadingtoerrorsintransferringdatabetweendifferentplatforms.Thisdoesn'thap

c++ - 我在哪里可以找到 size_t 的定义?

我看到用这种类型定义的变量,但我不知道它来自哪里,也不知道它的用途是什么。为什么不使用int或unsignedint?(其他“相似”类型呢?Void_t等)。 最佳答案 来自WikipediaThestdlib.handstddef.hheaderfilesdefineadatatypecalledsize_t1whichisusedtorepresentthesizeofanobject.Libraryfunctionsthattakesizesexpectthemtobeoftypesize_t,andthesizeofoper

c++ - 'new operator' 和 'operator new' 之间的区别?

“newoperator”和“operatornew”有什么区别? 最佳答案 我通常会尝试用不同的措辞来更好地区分两者,但无论如何这是一个好问题。Operatornew是一个分配原始内存的函数——至少在概念上,它与malloc()没有太大区别。尽管除非您编写自己的容器之类的东西,否则这是相当不寻常的,但您可以直接调用operatornew,例如:char*x=static_cast(operatornew(100));也可以全局或为特定类重载operatornew。IIRC,签名是:void*operatornew(size_t);

c++ - size_t 和 std::size_t 之间的区别

size_t和std::size_t在声明的位置、应在何时使用以及任何其他区别特性方面有何区别? 最佳答案 C的size_t和C++的std::size_t都是一样的。在C中,它在中定义在C++中,它在中定义其内容与Cheader相同(请参阅下面的引用)。其定义为sizeof运算符的result的无符号整数类型。C标准在§17.7/2中说,size_twhichistheunsignedintegertypeoftheresultofthesizeofoperatorC++标准在§18.1/3中说(关于cstddefheader),