繁体   English   中英

调用 vector.size() 的更有效方式

[英]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是一个vectorstd::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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM