使用自动变量打印矢量的内容
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++的函数耗时以及代码片段耗时详情