【问题标题】:checking a vector for its availability (performance issue)检查向量的可用性(性能问题)
【发布时间】:2013-04-19 10:57:45
【问题描述】:

我想检查一个向量,看看它是否至少有一个元素。哪个更快?

if (vec.size()) {
  ...
}

if (vec) {
  ...
}

有没有更好的解决方案?

【问题讨论】:

  • “if(vec)”真的有效吗?!
  • 后者无法编译,vector 没有隐式转换为布尔上下文中可接受的任何内容。 (@Kamouth:不,不是)
  • 无论如何,任何方式都可能超快。但是!std::vector::empty() 清楚地表明了您的意图,因此是最佳选择。
  • 同意,并且在某些容器上,empty() 实际上会更快,并且随着程序的发展更改容器的类型并不少见。

标签: c++ performance vector


【解决方案1】:

只使用vector::empty,因为它专门用于此特定任务。

  std::vector<int> myvector;

  for (int i=1;i<=10;i++) myvector.push_back(i);

  while (!myvector.empty())
  {
     sum += myvector.back();
     myvector.pop_back();
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多