通过调用vector.size()完成了多少工作?

Sir*_*lot 2 c++

这是一个简单的吸气剂吗?还是每次计算?

如果我有这样的for循环:

for (int i = 0; i < myVector.size(); i++) { }
Run Code Online (Sandbox Code Playgroud)

我只需要使用一次大小,在循环之前计算一次并将其存储在变量中会更好吗?或者size()只是一个简单的吸气剂,它会有什么不同?

Pla*_*aHH 6

这是实现定义.假设实现想要提供有效的标准库,那么两个最可能的实现是:

  • 从存储结束后指向一个指针的指针中减去指向存储开头的指针,并返回该计算的结果.
  • 返回一个大小变量,该变量对于向量中的每个操作保持同步.

无论如何,标准要求复杂性是恒定的,你不应该真的担心它.此外,编译器经常进行优化,以便自行存储您的大小.


Alo*_*ave 5

使用迭代器而不是这样的循环来获得更大的灵活性和genrosity:

std::vector<int>::const_iterator iter = myVector.begin();

for(iter; iter!= myVector.end(); ++iter)
{

}
Run Code Online (Sandbox Code Playgroud)

这可以确保如果在开发的后期更改容器,则代码的耦合程度会降低.

  • 我发烧了,唯一的处方是更多`auto`! (3认同)