C ++ 11 auto和size_type [英] C++11 auto and size_type

查看:148
本文介绍了C ++ 11 auto和size_type的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

由于以下使用 auto

  std :: vector< int> v; 
for(auto i = 0; i< v.size(); ++ i){
...
}
pre>

这是理想的C ++推导 i as std :: vector< int> :: size_type ,但是如果它只查看 i 的初始化器,它将看到一个整数。在这种情况下, i 的推导类型是什么?这是 auto 吗?

解决方案

c> decltype 而不是 auto 来声明 i

  for(decltype(v.size())i = 0; i< v.size(); ++ i){
/ / ...
}



更好的做法是使用迭代器迭代向量@ MarkB的回答显示。


Given the following usage of auto:

std::vector<int> v;
for (auto i = 0; i < v.size(); ++i) {
   ...
}

It would be ideal for C++ to deduce i as std::vector<int>::size_type, but if it only looks at the initializer for i, it would see an integer. What is the deduced type of i in this case? Is this appropriate usage of auto?

解决方案

Use decltype instead of auto to declare i.

for( decltype(v.size()) i = 0; i < v.size(); ++i ) {
  // ...
}

Even better, use iterators to iterate over the vector as @MarkB's answer shows.

这篇关于C ++ 11 auto和size_type的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆