1、警告原因:
C++11中range-for形式的for循环,最好用引用,否则会调用拷贝构造函数,占用额外的资源。
2、出现情况:
看如下代码:
std::vectorCPointDpts{{,},{,},{00,},{,}};
for(autopt:pts){
//
}
编译器(VC)提示信息:
、原因分析:
我们去微软官方学习网站查找这个警告的说明:
C:range-for循环中可能存在成本高昂的name变量副本。请考虑使其成为常量引用(es.71)。
如果range-for循环变量未显式标记为引用,则它会获取循环访问的每个元素的副本:
#includevector
classMyComplexType{
intnative_array[0];
};
voidexpensive_function(std::vectorMyComplexType