问题标签 [c++-standard-library]
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++ - XCode 4、Armadillo 和 XCode 标准库
我正在尝试编译我在 XCode 4 中使用犰狳的(非常基本的)程序,但是在编译犰狳时遇到了问题。
当我只做一个简单的makefile和clang ++时,它编译没有问题,但是使用XCode它似乎有严重的问题,弹出各种错误和警告,(当我在没有XCode的情况下构建它时,即使使用-Werrors,我一无所获,它构建干净)。
以下是其中的一些错误:
等等。我认为它们中的大多数都与标准库中没有的某些功能有关...... XCode 是否使用不同或不完整的标准库?我该如何改变它。
我真的只想使用 XCode 调试器,当我的代码没有运行时,它使事情变得更容易,而且有一个图形分析器也很好。
android - Android std 和 stl 支持
我正在玩android ndk。我正在使用带有 cygwin(最新版本)的 Window Vista。我在手机上编译并启动了 hello world jni 示例。这是工作。代码是(是一个 .cpp 文件):
我想添加一些修改,只是为了玩一下:
然后,在上面的函数中,我添加了:
但是编译器说它找不到文件“算法”并且 min() 不是 std 的一部分。
经过一番搜索,我发现 android ndk 有一个 gnu-libstdc++ 目录,其中包含所需的所有 std 文件。阅读 NDK 文档,我了解到 usint std::* 应该可以在不修改代码的情况下工作(如果包含正确的头文件)。但似乎 cygwin 上的 gcc 无法找到所需的文件。
为了能够在 android ndk 应用程序的 .cpp 文件中使用 std 和 stl,需要执行哪些步骤?
c++ - 依赖于编译器特定代理的 C++11 库功能
通过反复试验引起了我的注意,有些 C++11 特性依赖于某种编译器魔法 (TM)。我一直在搞乱实现我自己的标准符合标准的stdlib。我知道有现成的标准库实现,但这个更多是我自己的小型应用程序的个人版本。
昨晚我std::initializer_list
根据规范实现了,但我无法让它工作,我搜索了高和低的答案,只留下了不可能的声明,并且需要对编译器本身进行修改。好吧,我决定看看libstdc++
它的当前实现,果然我的实现在设计上完全一样,只是边缘略有不同,我浪费了无意义的时间来弄清楚为什么实现不工作,当它完全正确时在设计上与中的相同libstdc++
。直到六个小时后,我才意识到它必须在命名空间 std 中。原来实现是 merley 的编译器的代理,这使得这成为initializer_list
可能,编译器本身initializer_list
在namespace std
.
我的问题是我应该知道是否还有其他库功能需要某种特殊的编译器魔法才能工作,是否需要更多隐藏的代理连接,或者为任何新的 C++11 库功能隐藏编译器本质?我想提前知道这些,这样我就可以为实现其他依赖于编译器魔法的功能做好准备,而不是浪费一整天的时间通过反复试验来解决它;这可能会变得乏味且相当烦人。
谢谢。
exception - 是否有需要启用异常的 c++11 标准库接口列表?
从阅读 c++11 草案的 N3242 修订版来看,标准库接口的某些组件(特别是线程和锁定)似乎依赖于异常处理。
由于我在禁用异常的情况下做了很多工作,我想知道如果不启用异常处理,哪些库组件/功能将(实际上或逻辑上)不可用?
c++ - “STL”和“C++ 标准库”之间是否有明确的分离定义?
我非常习惯于STL(“标准模板库”)这个术语,当我真正指的是C++ 标准库时,我发现自己经常使用它。因此,由于现在 C++(-11) 标准库中的几乎所有内容都是模板,我想知道:在 C++Standard-Lib 中是否定义了 STL 是什么,什么不是?也许是容器、流、算法等?
还是我应该停止使用术语“STL”,因为它是 SGI(正确?)多年前用于他们的 lib 的历史性术语?这会很难...
c++ - Gnu C++ 宏 __cplusplus 是否符合标准?
Gnu C++ 编译器似乎定义__cplusplus
为1
这1
在标准 c++ 模式下使用 gcc 打印,在 C++0x 模式下使用gcc 4.3.4和 gcc 4.7.0 打印。
C++11 FDIS 在“16.8 Predefined macro names [cpp.predefined]”中说
在编译 C++ 翻译单元时,该名称
__cplusplus
被定义为值 201103L 。(脚注:这个标准的未来版本打算用一个更大的值替换这个宏的值。不符合标准的编译器应该使用最多五个十进制数字的值。)
旧的 std C++03 也有类似的规则。
GCC 是否故意将其设置为1
,因为它是“不合格的”?
通过阅读该列表,我认为__cplusplus
如果我有一个启用 C++11 的编译器,我可以用一种可移植的方式进行检查。但是对于g++,这似乎不起作用。我知道...EXPERIMENTAL...
宏,但很好奇为什么g++__cplusplus
以这种方式定义。
我最初的问题是在不同的空指针变体之间切换。像这样的东西:
是否有一种简单且合理便携的方式来实现这种开关?
c++ - c++:如何在构造函数中初始化 std::pair 的成员
我有以下课程:
如何在构造函数中初始化对中的套接字?以下将无法编译:
编辑:这是编译器错误。享受:
c++ - std::vector 构造函数行为
采取以下代码:
此代码不能使用 libstdc++ 编译。但是,它确实可以使用 Visual Studio 的 C++ 库进行编译。我期望的行为v
是填充了 10 个大小为 10 的向量,这就是我使用 Visual Studio 得到的。
使用 Visual Studio 调用的构造函数是采用两个迭代器的构造函数。构造函数本身定义为:
模板函数有两个版本_Construct
。两者具有相同的签名,但一个从一个范围初始化向量,另一个用从第二个参数构造的值类型副本的 N 个副本初始化向量。在这种情况下,模板参数仅对第二个版本有效_Construct
。
结果是v
填充了从值 10 构造的向量的 10 个副本。通过像这样构造它采用相同的代码路径,因为您必须使用 libstdc++ 来获得相同的效果:
这里哪个实现是正确的?这是 libstdc++ 错误还是 Visual Studio 的 C++ 库的扩展?
编辑:只是为了澄清,我不是在问它是否应该调用范围构造函数。我在问哪个 C++ 实现具有正确的行为,无论它采用哪条路径来实现它。
c++ - 编写自己的 STL 容器
是否有关于如何编写将像任何STL
容器一样运行的新容器的指南?
c++ - C++ 标准库是否有按插入顺序排序的集合?
C++ 标准库是否具有“有序集”数据结构?所谓有序集合,我的意思是与普通集合完全相同,std::set
但会记住您添加项目的顺序。
如果没有,模拟一个的最佳方法是什么?我知道你可以做一些事情,比如有一组对,每对存储它添加的数字和实际值,但如果有更简单的解决方案,我不想跳过箍。