草庐IT

auto-size

全部标签

c++ - 为什么这个 map<int, auto> 是不允许的?

我正在尝试用C++实现异构映射。我知道之前已经讨论过这个问题,但我想知道为什么不允许以下内容:mapmyMap;有什么方法可以让我在不借助(void*)指针的情况下简单地插入map?我在考虑最终能够做这样的事情:vectorv;myMap.insert(make_pair(1,12334));myMap.insert(make_pair)(2,v));这可能吗?还是我的努力是徒劳的?谢谢 最佳答案 auto并不意味着“这可以是任何类型”。它是一个特殊的关键字,只能用于声明变量,其含义是“这个变量的类型与用来初始化它的表达式的类型相同

c++ - 在 C++ 中使用 auto 的最简单示例是什么?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我试图理解auto在C++中是如何使用的。对我来说,理解某事的最好方法是看一个例子。然而,我看到的例子并不是那么简单。例如这里是“MeaningofC++0xautokeyword,byexample?”。要理解这个例子,我需要知道什么是"template"、“指针”、“malloc”等等。任何人都可以举一个使用auto的简单示例,以便人们可以轻松理解它的

c++ - 为什么 std::vector max_size() 函数会返回 -1?

我有一个std::vectorm_vData;m_vData.max_size()总是返回-1。为什么会这样? 最佳答案 可能是因为您在查看之前将其分配给签名类型。max_size的返回值通常是size_t,这是一个无符号类型。在许多平台上直接转换为int将返回-1。试试下面的方法std::vector::size_typev1=myVector.max_size(); 关于c++-为什么std::vectormax_size()函数会返回-1?,我们在StackOverflow上找到一

c++ - 使用 '&'进行迭代时 'auto'符号有什么作用

最近我在C++中使用auto时遇到了非常非常奇怪的问题,只是......看看下面的代码片段:我的主要功能:#include#include#includeintmain(){inta=10,b=20,c=30;listwhat;what.push_back(a);what.push_back(b);what.push_back(c);read(what);return0;}这里的函数是:voidread(constlist&con){for(autoit:con){printf("%p\n",&it);cout这是输出:0x7fffefff66a4100x7fffefff66a4200

c++ - 无法在 VS 14 CTP : conditional expression of type 'void' is illegal 中使用 auto 声明 lambda

使用VisualStudio2014CTP、C++(v140)编译器:autogp=[&](BYTE*buff){autogp1=[](char*bff,char**p1){*p1=strstr((char*)bff,"(");return(*p1);};};错误:conditionalexpressionoftype'void'isillegal(也许auto真的输入错误?)如果我将内部lambda声明为std::functiongp1然后就可以了是我做错了什么还是编译器错误? 最佳答案 我没有运行2014,但您可能需要指定内部l

c++ - 函数返回 auto 自动参数 munmap_chunk() : invalid pointer

我正在测试newfeature对于GCC4.9(自动输入参数)并出现一些奇怪的错误。#include#includeautofoo(autov){for(auto&&i:v)std::cout{1,2,3});}这给我以下错误:***glibcdetected***./a.out:munmap_chunk():invalidpointer:0x00007f87f58c6dc0***=======Backtrace:=========/lib/x86_64-linux-gnu/libc.so.6(+0x7e846)[0x7f87f4e4c846]./a.out[0x400803]/lib

c++ - Size of the Byte 是否可以大于 octet 8 bits

我正在浏览http://www.parashift.com/c++-faq/index.html在那里我发现字节也可以是64位http://www.parashift.com/c++-faq/very-large-bytes.html.一个字节的那么多存储容量有什么用? 最佳答案 重点不在于大字节“本身”的用处,而在于,对于标准而言,字节是系统上的最小可寻址数量1;如果系统无法以小于64位的单位寻址其内存,则char将为64位。显然,在现代通用计算机上几乎不可能找到这种奇怪的东西,这些奇怪的东西出现在非常专业的硬件上(我听说DSP特

c++ - std::hardware_destructive_interference_size 的可靠性

C++17引入了常量,这似乎对缓存感知编程很有用:https://en.cppreference.com/w/cpp/thread/hardware_destructive_interference_sizeinlineconstexprstd::size_thardware_destructive_interference_size,inlineconstexprstd::size_thardware_constructive_interference_size尽管我想知道它们的可靠性如何?是否保证以后不会有相同CPU架构内具有其他缓存线大小的新CPU型号?即x64缓存行大小为64字

c++ - "size_t"作为类型参数,未重现转换警告

我一直在尝试消除一些旧代码中的警告(必须使用MSVC2005,目前使用32位构建),但一直在努力消除size_t至unsignedint转换警告。我们有自己的Array实现一个不断增长的数组的实现templateconstT&at(constIi)const{returnatImpl(i);}方法。当调用为size_ti=10;myArray.at(i);我得到一个conversionfrom'size_t'to'constunsignedint',possiblelossofdata警告。一个工作理论是I理解为unsignedint,这导致编译器强制转换/转换size_t至unsig

c++ - std::max 与 lambda 和 auto

C++11难道不能做到这一点吗?使用当前的clang编译器(OSX10.8上的Xcode5)无法编译:std::max_element(group->GetComponents().begin(),group->GetComponents().end(),[](autoa,autob){returna.length>b.length;});错误信息是:Stuff.cp:68:40:函数原型(prototype)中不允许使用“auto” 最佳答案 在C++1y中你有通用的lambda,所以语法将在clang3.5中编译。.lambda