使用自动变量打印矢量的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用自动变量打印矢量的内容相关的知识,希望对你有一定的参考价值。

我在一本书中读到,迭代矢量的一种较短的方法如下:

for (auto x : v) 
{
  cout << x << "
";
}

当我在编译器中尝试相同时,我收到两条错误消息:

'auto'改变了C ++ 11中的含义,请删除它基于'for'循环的范围,仅适用于c ++ 11“和”'x'可能在此函数中未初始化使用

有人可以指出错误和解决方案吗?

答案

你的语法是正确的。请记住,你正在拍摄x中每个元素的副本,你可能想要使用const auto&代替。

您需要在编译器中启用C ++ 11 - 如果您使用gcc或clang,则只需传递-std=c++11标志即可。

另一答案

您确定要使用C ++ 11编译器编译代码吗?

使用gcc,您需要-std=c++11标志:

g++ -std=c++11

clang也是如此:

clang++ -std=c++11
另一答案

错误是您使用C ++ 11标准中引入的语言功能,同时使用不支持C ++ 11的编译器(在模式下)进行编译。

解决方案是使用支持C ++ + 11的编译器(在模式下)。如果您的编译器支持C ++ 11(它可能确实如此,因为它知道auto意义的变化),那么它的文档将指定如何启用C ++ 11或更高版本的标准模式。


你用的是什么编译器?

gcc(tdm 64-1)5.1.0

编译器的manual说:

要在GCC中选择此标准,请使用选项-std = c ++ 11;要获得标准所需的所有诊断,您还应指定-pedantic

以上是关于使用自动变量打印矢量的内容的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

双和ffast数学的自动矢量化

遍历地图和打印内容时获得向后输出

webstorm代码片段的创建

如何使用Android片段管理器传递变量[重复]

为什么不打印矢量元素?