问题标签 [c++11]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++0x 中 C++ 枚举的基础类型
我一直在尝试阅读一些 C++ 标准,以了解枚举的工作原理。实际上比我最初想象的要多。
int
对于范围枚举,除非使用 enum-base 子句另行指定(它可以是任何整数类型),否则基础类型很明显。
对于无范围的枚举,似乎基础类型可以是任何可以工作的整数类型,并且它不会大于 int,除非它需要。
由于无范围枚举的底层类型没有标准化,那么处理序列化枚举实例的最佳方法是什么?到目前为止,我一直int
在写入时转换为,然后在读取时序列化为一个int
并在开关中设置我的enum
变量,但这似乎有点笨拙。有没有更好的办法?
c++ - 我应该根据新标准还是旧标准(规范)学习 C++?
好的,我正在考虑在未来几个月内进入 c++ 开发(没有确定日期)。我对语言(主要是C)隐约熟悉,以及OO、MI、模板、异常、模式、使用过的STL的一些基础知识。现在我正处于我想深入掌握这门语言的时间点。自然的问题是我应该
从当前的C++03还是C++0x标准开始。
请建议从用户到大师的最佳方式,因为新标准几乎就在这里,并且可能会在未来很多年保持不变。
谢谢
c++ - C++0x 中的新 unicode 字符
我正在构建一个 API,它允许我获取各种编码的字符串,包括 utf8、utf16、utf32 和 wchar_t(根据操作系统可能是 utf32 或 utf16)。
新的 C++ 标准引入了新类型
char16_t
,并且char32_t
没有这种大小的歧义,应该在将来使用,所以我也想支持它们,但问题是,它们是否会干扰正常uint16_t
的 ,uint32_t
,wchar_t
类型不允许重载,因为它们可能指的是同一类型?所以我可以写:
/li>std::basic_string<char16_t>
今天的typedef 是什么std::basic_string<char32_t>
:我找不到任何参考。
编辑:根据 gcc-4.4 的标题,介绍了这些新类型:
我只是想确保这是实际的标准要求,而不是 gcc-ism。
c++ - 优化提升无序映射和集合,C++
我将解析 60GB 的文本并在地图中进行大量插入和查找。我刚开始使用 boost::unordered_set 和 boost::unordered_map 当我的程序开始填充这些容器时,它们开始变得越来越大,我想知道为这些容器预先分配内存是否是个好主意。类似 mymap::get_allocator().allocate(N); ?
还是我应该让他们自己分配和找出增长因素?代码看起来像这样
提前致谢
c++ - C++0x 初始化列表示例
我想看看这个现有代码示例如何能够利用 C++0x 初始化程序列表功能。
示例0:
它会支持这样的事情吗:
示例 1:
还是必须有这样的文字?:
示例 2:
如果是这样,将如何处理 AskString 和 Ask 之间的差异?
c++ - 你开始使用 C++0x 了吗?
大多数编译器已经支持 C++0x。你是开始使用 C++0x 还是在等待 x 的定义?我必须对我的代码进行一些重构;我应该开始使用新功能吗?
c++ - unique_ptr - 重大改进?
在实际的 C++ 标准中,创建满足以下规则的集合即使不是不可能也很难:
- 异常安全,
- 廉价的内部操作(在实际的 STL 容器中:操作是副本),
- 自动内存管理。
为了满足 (1),集合不能存储原始指针。为了满足 (2),集合必须存储原始指针。为了满足 (3),集合必须按值存储对象。
结论:三项相互冲突。
使用 s时不会满足第 (2) 项,shared_ptr
因为当集合需要移动元素时,它需要进行两次调用:构造函数和析构函数。不可能进行大规模memcpy()
的复制/移动操作。
我是否正确,所描述的问题将由unique_ptr
and解决std::move()
?使用这些工具的集合将能够满足所有 3 个条件:
- 当一个集合作为异常的副作用而被删除时,它将调用
unique_ptr
' 析构函数。没有内存泄漏。 unique_ptr
参考计数器不需要任何额外空间;因此它的主体应该与包装指针的大小完全相同,- 我不确定,但看起来这允许
unique_ptrs
通过使用memmove()
类似操作(?)来移动组, - 即使不可能,
std::move()
操作员也将允许移动每个unique_ptr
对象,而无需调用构造函数/析构函数对。
unique_ptr
将拥有给定内存的独占所有权。不会发生意外的内存泄漏。
这是真的?使用的其他优点是unique_ptr
什么?
c++ - C++ 类通用字符串常量
在 C++ 中,我想定义一些将在类中使用的字符串,但这些值将在所有实例中通用。在 CI 中会使用#define
s。这是一个尝试:
如果需要 C++0x,这是可以接受的。
c++ - C++0x 性能改进
允许编写更高效的 C++ 代码的 C++0x 改进之一是 unique_ptr 智能指针(太糟糕了,它不允许通过 memmove() 之类的操作移动:该提案未纳入草案)。
即将发布的标准中还有哪些其他性能改进?以下面的代码为例:
该代码将连接向量v中包含的所有字符串。这段简洁的代码的问题在于,accumulate() 复制了周围的东西,并且不使用引用。并且 string() 每次调用 plus 运算符时都会重新分配。因此,与优化良好的类比 C 代码相比,该代码的性能较差。
C++0x 是否提供了解决问题的工具,也许还有其他工具?
c++ - 对即将推出的 C++0x 的编译器支持
是否有对新 C++0x 有良好支持的编译器?
我使用 GCC,但不幸的是当前版本 4.4 对新功能的支持很差。