问题标签 [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.

0 投票
1 回答
327 浏览

c++ - c++11中的自动引用

我有一些麻烦about自动参考。

为什么推断类型是ri1 const int而不是ri2

谢谢!

0 投票
2 回答
6272 浏览

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)。

考虑到我期望获得可比较的执行时间,我的问题是:

  1. 我做了什么明显错误的事情吗?
  2. 如果不是,那么 2 倍的性能损失难道不是不采用现代风格循环的好理由吗?

我想指出,我确实相信以现代 C++ 风格编写的代码的清晰度和安全性会为可能的性能损失带来回报,但我完全不同意在清晰度/安全性之间没有权衡的说法一边和另一边的表现。

我错过了什么吗?

0 投票
4 回答
782 浏览

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)应该已经回答了这个问题。

0 投票
2 回答
10898 浏览

c++ - 为什么 C++11 'auto' 关键字对静态成员不起作用?

编译: gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 像这样:

这是auto关键字的预期行为,还是 gcc+ 中的错误

0 投票
6 回答
93337 浏览

c++ - 如何使用“auto”关键字迭代 C++ STL 映射数据结构?

到目前为止,我一直使用迭代器来遍历 STL 映射中的所有键,如下所示:

最近,虽然我遇到了一些使用不同样式来遍历键的代码,如下所示。是否最近才在修订标准中添加此功能?正如许多其他语言已经提供的那样,这似乎是一种用更少的代码完成更多工作的相当有趣的方式。

另外,我很想知道在这里使用关键字“auto”的确切含义。

0 投票
1 回答
563 浏览

c++ - 如何 SFINAE 启用返回“自动”的成员函数

在模板元编程中,可以在返回类型上使用 SFINAE 来选择某个模板成员函数,即

但是,如果有问题的函数(在上面的例子中)具有自动检测的返回类型,这将不起作用_sum(),例如_func()在这个例子中

还可以做些什么来获得 SFINAE?

0 投票
3 回答
2555 浏览

c++ - 向量::operator[] 行为不端?

可能重复:
为什么 vector<bool>::reference 不返回对 bool 的引用?

我曾经认为std::vector::operator[]我们可以获得访问项目的深层副本,但似乎并非总是如此。至少,使用vector<bool>下面的测试代码给出了不同的结果:

输出(用VC10/VS2010 SP1编译的源代码):

我原以为分配v[0] x = newValue仍会等于其先前的值,但这似乎不正确。这是为什么?为什么vector<bool>特别?

0 投票
1 回答
91 浏览

c++ - 为什么这个矢量不打印?

编译错误说it没有在这个范围内声明,它没有命名类型,预期;

0 投票
2 回答
121 浏览

c++ - 如何访问此自动变量?

我声明了一个自动类型的测试变量,但现在我不知道如何访问它。我知道如何使这个程序在没有的情况下工作,auto但在这里我想知道如何访问该auto变量。

编译器日志:

如何打印test

0 投票
4 回答
1128 浏览

c++ - 什么时候不使用`auto&&`?

  1. 从 make_tuple 返回时是否涉及复制/移动(没有 RVO)?
  2. 它会导致未定义的行为吗?
  3. 我都可以读写通用参考。可以auto&& var = func()一直使用而不是auto var = func()这样就没有复制/移动?