草庐IT

C++:std::tuple_size/tuple_element 可以专门化吗?

是std::tuple_size的特化和std::tuple_element允许自定义类型?我想是的,但我想绝对确定,我找不到任何具体信息。示例(省略了命名空间、成员函数和get重载):templatestructvector{T_data[N];};templateconstexprT&get(vector&vec){returnvec._data[I];}namespacestd{templateclasstuple_size>:publicstd::integral_constant{};templateclasstuple_element>{public:usingtype=T

c++ - 在 C++ 中使用 size_t 是一种好习惯吗?

我看到人们使用size_t每当它们表示无符号整数时。例如:classCompany{size_tnum_employees_;//...};这是好的做法吗?一件事是你必须包括.应该是unsignedint反而?甚至只是int?仅使用int听起来对我很有吸引力,因为它避免了像这样的愚蠢错误(因为人们经常使用int):for(inti=num_employees_-1;i>=0;--i){//dosomethingwithemployee_[i]} 最佳答案 size_t可能与int的大小不同.对于员worker数等因素,这种差异通常是

c++ - 宏定义 ARRAY_SIZE

我在阅读谷歌V8中的globals.h时遇到了如下宏定义项目。//TheexpressionARRAY_SIZE(a)isacompile-timeconstantoftype//size_twhichrepresentsthenumberofelementsofthegiven//array.YoushouldonlyuseARRAY_SIZEonstaticallyallocated//arrays.#defineARRAY_SIZE(a)\((sizeof(a)/sizeof(*(a)))/\static_cast(!(sizeof(a)%sizeof(*(a)))))我的问题是

c++ - 新的 int[size] 与 std::vector

为了分配动态内存,我一直在C++中使用vector。但是最近,在阅读一些源代码时,我发现了“newint[size]”的使用,并在一些研究中发现它也分配了动态内存。谁能给我建议哪个更好?我是从算法和ICPC的角度来看的? 最佳答案 总是更喜欢标准容器。它们具有明确定义的复制语义,异常安全,并正确释放。当你手动分配时,你必须保证释放代码被执行,并且作为成员,你必须编写正确的复制赋值和复制构造函数,在异常情况下做正确的事情而不会泄漏。手动的:int*i=0,*y=0;try{i=newint[64];y=newint[64];}catc

c++ - &arr[size] 有效吗?

假设我有一个函数,调用如下:voidmysort(int*arr,std::size_tsize){std::sort(&arr[0],&arr[size]);}intmain(){inta[]={42,314};mysort(a,2);}我的问题是:mysort(更具体地说,&arr[size])的代码是否已经定义了行为?我知道如果替换为arr+size会完全有效;指针算法允许正常指向末尾。但是,我的问题具体是关于&和[]的使用。根据C++115.2.1/1,arr[size]等价于*(arr+size)。引用5.3.1/1,一元*的规则:Theunary*operatorperfo

c++ - 那里有 "function size profiler"吗?

在从事C++项目三年后,可执行文件已增长到4MB。我想看看所有这些空间的去向。有没有工具可以报告最大的太空pig是什么?很高兴看到按类(类中的所有函数)、按模板(所有实例化)和按库(有多少属于C标准库和STL?exe中的每个库有多少?)编辑:注意,我在Windows上使用VisualC++。 最佳答案 在Linux中,您可以使用nm显示可执行文件中的所有符号并按大小倒序排序:$nm-CSr--size-sort选项:-C对C++名称进行解码。-S显示符号的大小。--size-sort按大小对符号进行排序。-r反转排序。如果你想获得每

C++ vector max_size();

在32位系统上。std::vector::max_size()返回232-1,大小为char—1个字节std::vector::max_size()返回230-1,大小为int—4字节std::vector::max_size()返回229-1,大小为double—8字节谁能告诉我max_size()取决于什么?max_size()的返回值是多少?如果它在64位系统上运行。 最佳答案 max_size()是理论上可以放入vector中的最大项目数。在32位系统上,理论上您可以分配4Gb==2^32,即2^32char值、2^30in

c++ - c++ size_t在linux中定义在哪里

现在我正在谈论程序员使用typedef关键字定义的新类型。只要我的学生习惯了size_t类型(例如通过使用函数length()),我不得不让他们稍微努力“相信”它是一个整数类型,我认为它会很棒向他们展示这种类型的定义位置。所以,我在Ubuntu机器中的/usr/include中做了很多grep,我看到size_t是size_type的重新定义,而size_type又是metadata_type的重新定义,这就是在这个目录下结束。没有找到最终的“typedefunsignedintmetadata_type;”。在/usr/src中,我发现了另一个名为yy_size_t的先前类型,...

c++ - 为什么在 Mac OS X 上使用 size_t 时 uint32_t 和 uint64_t 之间存在歧义?

考虑以下示例代码:#include#includeusingnamespacestd;intf(uint32_ti){return1;}intf(uint64_ti){return2;}intmain(){cout这在MacOSX上失败:$g++--versioni686-apple-darwin10-g++-4.2.1(GCC)4.2.1(AppleInc.build5664)$maketestg++test.cc-otesttest.cc:Infunction'intmain()':test.cc:23:error:callofoverloaded'f(size_t&)'isamb

c++ - 如何编写适用于任何类型集合对象的 size() 函数?

我需要一种简单的方法来获取T类对象的计数/长度/大小在哪里T是某种集合类型,例如std::map,std::list,std::vector,CStringArray,CString,std::string,……对于大多数标准类型,T::size()是正确答案,对于大多数MFC类T::GetSize()是正确的,对于CString,是T::GetLength().我想点个赞:templateautosize(constT&t)...计算出正确的成员函数调用。似乎应该有一种简单的方法来调用T上的特征模板其中有一个size(constT&t)成员,它本身使用SFINAE存在或不存在,如果存