草庐IT

标准ACL

全部标签

c++ - C++11标准中是否规定std::begin(Container&&)返回const_iterator?

这里是相关代码的链接:#include#include#include#includeintmain(){std::vectorv{1,2,3,4,5};autoiter=begin(std::move(v));if(std::is_const::type>::value)std::couthttp://coliru.stacked-crooked.com/a/253c6373befe8e50我遇到这种行为是因为declval()在decltype用std::begin表达.gcc和clang都返回迭代器,这些迭代器在取消引用时会产生const引用。这可能是有道理的,因为右值引用通常绑

c++ - 为什么 Qt 有标准 C++ 对象(例如 QVector、QString 等)的 'Q' 版本?

为什么Qt必须为C++中的许多标准对象/数据结构提供“Q”版本?推理是从一个来源产生的(即需要附加元数据用于格式化目的),还是仅取决于具体情况(例如QString允许更多语言设置而QVectors允许“任何”)?谢谢! 最佳答案 Qt容器先于STL容器,原始版本(在Qt1或Qt2或其他版本中)是在没有标准C++替代品时创建的。此外,STL对所有(当时)支持的编译器的调整是渐进的,Qt面向跨平台,因此保持其自身的实现可以保证它在任何地方都可以相同地工作。对于下一个主要的Qt版本,现在摆脱Qt自己的类型将意味着不可能完成大量的移植工作,

c++ - 标准模板字符串类 : string. fill()

我需要一种方法来创建一个包含n个字符的字符串。在这种情况下,ascii值为零。我知道我可以通过调用构造函数来做到这一点:字符串sTemp(125000,'a');但我想在很多地方重用sTemp并用不同的长度填充它。我正在调用一个以字符串指针和长度作为参数并用字节填充字符串的库。(我知道从技术上讲,字符串不是连续的,但就所有意图和目的而言,它是连续的,并且很快就会成为标准)。我不想使用vector。有没有什么巧妙的方法可以在创建字符串后再次调用构造函数? 最佳答案 string类提供了方法assign来为给定的字符串分配一个新值。签名

c++ - 为什么 Windows 和 Linux 的标准库函数名称不同?

我正在将一个Windows库移植到Android(使用GNU标准C++库选项,libstdc++-v3),VC和GNU库之间似乎存在许多命名差异,例如:_stricmp被称为strcasecmp而不是_unlink被称为unlink_scalb称为scalbn_finite被称为isfinite_isnan被称为isnan_itoa和itoa在GNUC++中似乎不存在atoi确实存在,但atoi64不存在VC和GNU库的文档暗示它们实现了“ISO”C++,例如,我可以从VC2008中得到一些关于不使用“ISOC++”名称的警告,例如这个:“警告C4996:'itoa':此项的POSIX

c++ - 标准库容器的通用函数模板

我正在尝试编写一个简单的通用函数来迭代容器元素。每个元素都被转换为std::string(无论如何)并存储在另一个地方。基本版本很简单:templatevoidContainerWork(constContainer&c){for(constauto&elem:c){/*converttostringandstore*/}}然后有必要为值类型为std::string的容器添加特化并将代码转换为:templateclassContainer,classAllocator>voidContainerWork(Containerc){for(constT&elem:c){/*convertt

c++ - 符合 IEEE-754 标准的四舍五入

C标准库提供了round,lround,和llroundC99中的函数族。但是,这些函数不符合IEEE-754,因为它们没有实现IEEE规定的半对偶的“银行家四舍五入”。如果小数部分恰好为0.5,则半对偶四舍五入要求将结果四舍五入到最接近的偶数。如cppreference.com中所述,C99标准改为要求离零一半。1-3)Computesthenearestintegervaluetoarg(infloating-pointformat),roundinghalfwaycasesawayfromzero,regardlessofthecurrentroundingmode.在C中实现舍

c++ - 如何(以及谁可以)实现 C++ 委员会定义的标准库功能?

当C++委员会发布一项将成为该语言的下一个标准中标准库的一部分的新功能时,他们是否也发布了一些源代码或某种关于如何实现该功能的指南?我们以unique_ptr为例。语言委员会只是为那个类模板定义了一个接口(interface),然后让编译器供应商随意实现它?标准库功能的实现过程究竟是如何发生的?任何人都可以为尚不支持标准库的平台实现部分标准库吗?假设我想实现C++标准库的一些很酷的功能,以便在微Controller环境中使用它。我怎么能那样做?我应该在哪里寻找信息?如果我决定开源我的项目,我可以这样做吗?我是否需要完全遵循标准的规定,或者我可以编写一个不合规的版本?

c++ - Microsoft _s 函数,它们现在是 C++ 标准的一部分吗?

我最近刚将我的IDE更改为来自MSVC++6的MSVisualStudio2005,我收到了很多弃用警告。我没有忽略警告,而是开始将它们更改为_s等价物。但是,我随后发现这些是仅限Microsoft的实现。我在某处读到他们正在插入这些成为标准的一部分。是吗?使用这些_s函数是个好主意吗?还是我应该使用其他东西?谢谢。 最佳答案 *_s()函数不是C标准的一部分,但是有一份待定的“技术报告”建议添加它们(我不确定TR中的例程是否与Microsoft的完全相同,或者只是相似)。TR24731-1:C库扩展第I部分:边界检查接口(inte

Python标准库(Python自带的模块和包)

一、自带电池        “自带电池”指python语言的标准库,因为它包含了丰富的功能和工具,几乎可以满足大部分的开发需求,就像一个内置电池一样,所以python标准库被称之为“自带电池”。二、操作系统接口2.1OSpython中的os模块提供了丰富的与操作系统交互的函数。开发人员可以通过os模块提供的函数对文件和目录执行系统命令,以及获取系统信息。注:在调用时一定要使用importos而不能使用fromosimport*。这将避免内建的open()函数被os.open()隐式替代。(open和os.open的作用是有很大区别的)os模块的常用函数和方法有:os.name:返回当前操作系统

c++ - 对齐此类结构是否符合 C++ 标准

举个例子classA{public:inta;charb;intc;};我看到的每个编译器(对于x86、32或64位)都为类A分配12个字节,而不是9个。因此它们将b与整数边界对齐或者你可以说总线边界。我的问题是,这是否符合C++标准,是否有任何编译器不这样做。 最佳答案 C++标准规定:对象有一个对齐要求,它们的大小是一个倍数(所以如果int是4字节宽,那么它需要1、2或4字节的对齐,这取决于实现)。成员对象(如果它们没有被诸如public之类的访问说明符分隔)都按照它们被声明的顺序分配并根据他们的对齐要求分配他们。所以不,标准并