草庐IT

CACHELINE_SIZE

全部标签

c++ - 为什么 C++ 标准算法 "count"会返回一个 difference_type 而不是 size_t?

为什么返回类型是std::countdifference_type迭代器(通常是ptrdiff_t)。由于计数永远不会是负数,所以size_t技术上正确的选择?如果计数超出ptrdiff_t的范围怎么办?因为数组的理论可能大小可以是size_t?编辑:到目前为止,对于函数返回ptrdiff_t的原因,还没有合适的答案。.从下面的答案中收集到的一些解释是返回类型是iterator_traits::difference_type这是通用的,可以是任何东西。直到那时,它才有意义。在某些情况下,计数可能会超过size_t.但是,返回类型为什么是typedefptrdiff_titerator_

c++ - 更正 size_t : %zu or %Iu? 的 printf 格式说明符

我想打印出size_t的值变量使用printf在C++中使用MicrosoftVisualStudio2010(我想在这段特定的代码中使用printf而不是,所以请没有答案告诉我应该使用代替)。根据帖子Platformindependentsize_tFormatspecifiersinc?正确的平台无关方式是使用%zu,但这似乎在VisualStudio中不起作用。VisualStudio文档位于http://msdn.microsoft.com/en-us/library/vstudio/tcxf1dw6.aspx告诉我必须使用%Iu(使用大写i,而不是小写l)。微软没有遵循这里的

c++ - 这个 "size of array"模板函数是如何工作的?

这个问题在这里已经有了答案:Howdoesthistemplatemagicdeterminearrayparametersize?(3个回答)关闭2年前。有人能解释一下这段代码是如何工作的吗?我知道这段代码的目的是获取数组的长度,但是不知道这段代码是怎么工作的:templateintGetArrLength(T(&)[size]){returnsize;} 最佳答案 首先让我们剖析参数T(&)[size]。首先从内到外、从右到左、括号组读取声明:它是一个未命名的参数,它是对T类型的大小为size的数组的引用。也就是说,它接受对任何

c++ - C++ 中的 vector <int>::size_type

这个C++语句是什么意思?vector::size_typex;而且,这里的作用域运算符::有什么用?换句话说,我们如何阅读这个英文陈述?例如,对于X::x(){...},我们说x()是一个成员函数classX. 最佳答案 size_type是类型为vector的(静态)成员类型.通常是typedef对于std::size_t,它本身通常是typedef对于unsignedint或unsignedlonglong. 关于c++-C++中的vector::size_type,我们在Stac

c++ - 为什么 size_t 是无符号的?

BjarneStroustrup在C++编程语言中写道:Theunsignedintegertypesareidealforusesthattreatstorageasabitarray.Usinganunsignedinsteadofaninttogainonemorebittorepresentpositiveintegersisalmostneveragoodidea.Attemptstoensurethatsomevaluesarepositivebydeclaringvariablesunsignedwilltypicallybedefeatedbytheimplicitco

c++ - 了解 std::hardware_破坏性_interference_size 和 std::hardware_constructive_interference_size

添加了C++17std::hardware_destructive_interference_sizeandstd::hardware_constructive_interference_size.首先,我认为这只是获取L1缓存行大小的一种可移植方式,但这是过于简单化了。问题:这些常量与L1缓存行大小有何关系?是否有一个很好的例子来展示他们的用例?两者都定义为staticconstexpr。如果您构建二进制文件并在具有不同缓存行大小的其他机器上执行它,这不是问题吗?当您不确定您的代码将在哪台机器上运行时,它如何防止错误共享? 最佳答案

c++ - "std::size_t"在 C++ 中有意义吗?

在我继承的一些代码中,我看到经常将size_t与std命名空间限定符一起使用。例如:std::size_tn=sizeof(long);当然,它编译并运行良好。但对我来说,这似乎是一种不好的做法(可能是从C语言继承而来的?)。size_t是不是内置在C++中并因此位于全局命名空间中?在C++中使用size_t是否需要包含头文件?问这个问题的另一种方法是,以下程序(包含no)是否应该在所有C++编译器上编译?size_tfoo(){returnsizeof(long);} 最佳答案 stackoverflow人群似乎对此感到困惑::s

c++ - `sizeof` *真的*评估为 `std::size_t` 吗?它可以?

阅读以下标准段落:[C++11:5.3.3/6]:Theresultofsizeofandsizeof...isaconstantoftypestd::size_t.[Note:std::size_tisdefinedinthestandardheader(18.2).—endnote]现在:[C++11:18.2/6]:Thetypesize_tisanimplementation-definedunsignedintegertypethatislargeenoughtocontainthesizeinbytesofanyobject.当然,这篇文章不需要size_t是用typede

c++ - list::size() 真的是 O(n) 吗?

最近,我注意到有人提到std::list::size()具有线性复杂度。根据somesources,这实际上取决于实现,因为标准没有说明复杂性必须是什么。评论inthisblogentry说:Actually,itdependsonwhichSTLyouareusing.MicrosoftVisualStudioV6implementssize()as{return(_Size);}whereasgcc(atleastinversions3.3.2and4.1.0)doitas{returnstd::distance(begin(),end());}Thefirsthasconstan

JSON 整数 : limit on size

是否在任何地方指定了JSON整数的大小?我猜它们仅限于普通(32位)整数,但我找不到任何写下来的地方。我需要在Java中对长的标识符进行编码,所以我认为我需要将它们作为字符串存储在JSON中,以免有溢出的风险。 最佳答案 JSON编号不受thespec的限制.由于JSON是一种抽象格式,并非专门针对JavaScript,实际的目标环境决定了可以解释的内容的边界。还值得注意的是,没有“JSON整数”,它们是“数字”数据类型的子集。 关于JSON整数:limitonsize,我们在Stack