草庐IT

标准ACL

全部标签

c++ - 在C++标准中,它在哪里表示用它代表的源代码替换类别描述的间距协议(protocol)?

冒着提出一个过于挑剔的问题的风险,我花了很长时间试图证明(作为整个标准在不同上下文中发生的事情的一个例子)以下integerliteral的定义是合理的。在C++11标准的§2.14.2中,特别是关于一个细节,即语法符号本身中空格的存在。(请注意,此示例-整数文字的定义-不是我的问题的重点。我的问题的重点是询问C++标准本身使用的语法描述符号,特别是关于语法类别名称之间的空格。我在这里给出的例子-整数文字的定义-之所以特别选择,只是因为它作为一个简单而清晰的例子。)(为简洁而缩写,来自§2.14.2):integer-literal:decimal-literalinteger-suf

c++ - c++标准库中的所有函数都需要有外部链接吗?

所以我有一个应用程序可以在Windows、Linux和一些Unix变体上编译得很好。我最近遇到问题时决定将它移植到OSX。我有一个看起来像这样的模板:templateintsafe_ctype(unsignedcharc){returnF(c);}想法是防止符号扩展在给定高于0x7f的输入值时使某些实现崩溃。它通常像这样使用:safe_ctype(ch);不幸的是,这不适用于OSX(使用gcc4.2)。该错误与std::isspace没有外部链接有关,因此不适用于模板。事实证明,在OSX上,ctype.hheader具有标记为staticinline的所有函数(通过宏)。这是我的问题:

c++ - C++ 标准库是 C++ 语言的一部分吗?

C++标准库是C++语言的一部分吗?(注意“语言”,而不是“标准”;当然,两者都是标准的一部分)。如果是,为什么?如果不是,为什么不呢?这个问题的答案在C++98、C++03和C++0x中可能不同。这不是主观的,因为它可以从相关标准文件中的措辞/要求中推断出来。 最佳答案 是的,在当前标准(C++03)和即将到来的新标准(C++0x,终于到了最终草案阶段,所以现在应该不会太长)中,库函数是规范的一部分(至少对于托管实现而言)。即使是独立的实现也需要一个标准库,尽管它要简单得多。在C++03中,第17章到第27章涉及标准库。在C++0

c++ - 在 C++ 中获取均匀分布的随机整数的标准方法是什么?

有没有函数可以获取指定范围内均匀分布的伪随机整数?我可以使用rand编写自己的函数,但这似乎是一种很常见的情况,STL中可能有适合它的东西。 最佳答案 Boost提供了许多随机数生成工具。对于统一分布,你有这个:http://www.boost.org/doc/libs/1_49_0/doc/html/boost/random/uniform_real_distribution.html编辑:更新为包含新的C++11实现。对于整数的情况,这里有引用:http://en.cppreference.com/w/cpp/numeric/r

c++ - 是否有用于拆分 std::pair 的标准 C++ 函数对象?

有谁知道是否存在用于访问std::pair元素的实际标准(即TR1或Boost)C++函数对象?在过去的24小时内,我曾两次希望我有类似keys函数的Perl散列函数。例如,最好在std::map对象上运行std::transform并将所有键(或值)转储到另一个容器。我当然可以编写这样一个函数对象,但我更愿意重用那些吸引了很多眼球的东西。 最佳答案 boost::bind就是您要找的东西。boost::bind(&std::pair::second,_1);//returnsthevalueofapair例子:typedefstd

c++ - 为什么 std::accumulate 对于标准数组会有这样的行为?

我刚接触C++,我想我已经掌握了指针,但是std::accumulate()让我感到困惑。给定数组:inta[3]={5,6,7};我想用std::accumulate()对数组的值求和,所以我向它传递了一个指向第一个元素的指针,然后是最后一个元素,然后是蓄能器。std::accumulate(a,a+2,0);std::accumulate(&a[0],&a[2],0);糟糕:其中任何一个只返回前两个元素的总和:11。另一方面,如果第二个参数是一个无意义的指针,就超出了范围......std::accumulate(a,a+3,0);std::accumulate(&a[0],&a[

c++ - 用户定义的推导指南是否涉及模板模板参数作为指南标准的模板

背景昨天我问了一个关于guaranteesofdeductionguidesusageincaseoftemplatetemplateparameters的问题.当Barry将他的答案更改为确认代码符合标准时,我真的很惊讶。我的惊讶实际上并不是来自模板模板参数可以应用推导指南,而是更多来自符合此合规性的标准部分,即[temp.param]/3。:Atype-parameterwhoseidentifierdoesnotfollowanellipsisdefinesitsidentifiertobeatypedef-name(ifdeclaredwithouttemplate)ortem

c++0x标准库引用手册

多年来,我一直在使用C++编写代码,最近听说C++标准即将发布新修订版。我研究了标准草案,发现有很多新东西可以使我的编程更容易。所以我想在新标准出来之前习惯它。但是,如果没有像样的引用手册,就很难使用新的标准库进行编码。我用谷歌搜索,只找到了一些页面,例如Wikipedia'sC++0xpage不是引用手册。有人知道任何C++0x标准库引用手册吗?我正在寻找类似于MSDN的StandardC++LibraryReference的东西. 最佳答案 在wiki-basedcppreference.com上获得C++0x的新特性方面取得了

c++ - 传递标准 :array around

我正在尝试编写一个可以在可变大小的std::array上工作的函数,例如:std::arraya={1,2,3,4,5};std::arrayb={6,7,8};myFunc(a);myFunc(b);voidmyFunc(std::array&p){cout但是,除非我指定大小,否则它不起作用,但我希望函数从数组中获取大小。我真的不想要vector使用的复制和动态分配,我想使用std::array()分配的空间并且不希望编译器为每个可能的数组大小创建函数的拷贝。我想过创建一个像数组一样工作的模板,但会采用指向现有数据的指针而不是自己分配它,但不想重新发明轮子。这有可能吗?

c++ - C++ 标准中的重载与默认参数

我正在阅读另一个问题,这让我开始思考。标准通常指定在其描述中具有默认参数的函数。标准是否允许将它们写成重载?例如,标准规定std::basic_string::copy具有以下声明:size_typecopy(Ch*p,size_typen,size_typepos=0)const;标准库的一致实现是否可以像这样将其实现为两个函数?size_typecopy(Ch*p,size_typen,size_typepos)const;size_typecopy(Ch*p,size_typen)const;在这个例子中,第二个版本可以跳过if(pos>size()){throwout_of_r