问题标签 [auto]
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++11中的自动引用
我有一些麻烦about
自动参考。
为什么推断类型是ri1
const int
而不是ri2
?
谢谢!
c++ - C++11 现代风格循环与旧式循环的性能
这是我在这里发布的第一个问题,所以我希望我不会做错任何事情。
我的问题涉及现代风格的 C++11 循环(std::for_each
基于范围的 for)与旧式 C++ 循环(for (...; ...; ...)
)的性能。根据我的理解,在我看来,现代 C++ 的座右铭是“表现力不妥协”。现代 C++ 风格带来安全、干净和快速的代码,几乎没有性能损失,并且可能比旧式 C++ 获得性能提升。
现在我做了一个小测试来评估这个增益对循环的影响有多大。首先我写了以下三个函数:
main()
然后我通过这种方式调用它们来比较它们的性能(正确注释/取消注释循环内的三行:
通过注释/取消注释main()
's 循环中的行并使用旧式循环作为基线,平均每个版本的程序执行 10 次以上,基于范围的 for 循环的性能差约 1.9 倍,而基于std::for_each
并且 lambdas 的性能差了约 2.3 倍。
我使用 Clang 3.2 来编译它,我还没有尝试过 MS VC11(我正在使用 WinXP)。
考虑到我期望获得可比较的执行时间,我的问题是:
- 我做了什么明显错误的事情吗?
- 如果不是,那么 2 倍的性能损失难道不是不采用现代风格循环的好理由吗?
我想指出,我确实相信以现代 C++ 风格编写的代码的清晰度和安全性会为可能的性能损失带来回报,但我完全不同意在清晰度/安全性之间没有权衡的说法一边和另一边的表现。
我错过了什么吗?
c++ - 关键点附近的关键字“auto”
可能重复:
C++0x 自动关键字多少是太多了
我发现在临界点附近使用“自动”可能会导致一些问题。
这是示例代码:
“auto”决定了“i”的类型是整数,但整数的上限是2147483647,很容易溢出。
这是Ideone(gcc-4.5.1)和LWS(gcc-4.7.2)的输出。它们是不同的:“i”在Ideone(gcc-4.5.1)上的循环中保持 2147483647 并在LWS(gcc-4.7.2)上溢出。但它们都不是预期的结果:10 个周期,每次 +1。
我应该避免在临界点附近使用“自动”吗?或者我如何在这里适当地使用“自动”?
更新:有人说“尽可能使用汽车”。在这个线程中你告诉我。我认为这不太对。“long long int”类型更适合这里的“int”类型。我想知道哪里可以安全地使用“自动”,哪里不能。
更新 2:Herb Sutter文章的解决方案 4(b)应该已经回答了这个问题。
c++ - 为什么 C++11 'auto' 关键字对静态成员不起作用?
编译: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 像这样:
这是auto
关键字的预期行为,还是 gcc+ 中的错误
c++ - 如何使用“auto”关键字迭代 C++ STL 映射数据结构?
到目前为止,我一直使用迭代器来遍历 STL 映射中的所有键,如下所示:
最近,虽然我遇到了一些使用不同样式来遍历键的代码,如下所示。是否最近才在修订标准中添加此功能?正如许多其他语言已经提供的那样,这似乎是一种用更少的代码完成更多工作的相当有趣的方式。
另外,我很想知道在这里使用关键字“auto”的确切含义。
c++ - 如何 SFINAE 启用返回“自动”的成员函数
在模板元编程中,可以在返回类型上使用 SFINAE 来选择某个模板成员函数,即
但是,如果有问题的函数(在上面的例子中)具有自动检测的返回类型,这将不起作用_sum()
,例如_func()
在这个例子中
还可以做些什么来获得 SFINAE?
c++ - 向量::operator[] 行为不端?
我曾经认为std::vector::operator[]
我们可以获得访问项目的深层副本,但似乎并非总是如此。至少,使用vector<bool>
下面的测试代码给出了不同的结果:
输出(用VC10/VS2010 SP1编译的源代码):
我原以为分配v[0]
后x = newValue
仍会等于其先前的值,但这似乎不正确。这是为什么?为什么vector<bool>
特别?
c++ - 为什么这个矢量不打印?
编译错误说it
没有在这个范围内声明,它没有命名类型,预期;
c++ - 如何访问此自动变量?
我声明了一个自动类型的测试变量,但现在我不知道如何访问它。我知道如何使这个程序在没有的情况下工作,auto
但在这里我想知道如何访问该auto
变量。
编译器日志:
如何打印test
?
c++ - 什么时候不使用`auto&&`?
- 从 make_tuple 返回时是否涉及复制/移动(没有 RVO)?
- 它会导致未定义的行为吗?
- 我都可以读写通用参考。可以
auto&& var = func()
一直使用而不是auto var = func()
这样就没有复制/移动?