[英]More efficient way to call vector.size()
给定一个整数向量,我看到我的教授在写:
for (int i=0;i<vect.size();++i)
{
}
我认为他的代码效率不高,可以用以下代码代替,对吗?
int vect_size=vect.size();
for (int i=0;i<vect_size;++i)
{
}
不要陷入这样的过早优化陷阱。 如果需要(如果有指示),您的编译器完全能够优化这些行。
您还应该注意其他事项。
假设vect
是一个vector
, std::vector::size()
返回一个size_t
值,它是一个无符号类型。 您的编译器可能会警告您有关i < vect.size()
的比较,其中涉及不同符号的变量。
如果您真的希望i
成为int
(可能没有理由将其无符号),您可以使用以下内容
for (int i = 0, v_size = vect.size(); i < v_size; ++i ) { /*... */ }
你真的需要i
吗? 由于 C++11 您可以编写基于范围的 for循环,并且通常,您可能希望(1)使用标准库提供的算法之一,而不是原始循环。
1) 参见例如 Sean Parent 的这个演讲。
你可以这样做:
for (std::size_t i = 0, vect_size = vect.size(); i < vect_size; ++i)
{
}
这样,您可以限制 vect_size 的vect_size
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.