c++ - 如果元素的数量已知,检查数组或 vector 中的所有元素是否相等更好吗?

标签 c++ arrays vector equality

如果您已经知道要比较的元素数量(在我的例子中是 5 个),使用 std::array 还是 std::vector< 更好?/?

for(int i=1; i<a.size(); i++)
   if(a[0] != a[i]){
      std::cout << "One or more elements are not equal" << std::endl;
      break;
   }
}

for(int i=1; i<myvector.size(); i++)
   if(myvector[0] != myvector[i]){
      std::cout << "One or more elements are not equal" << std::endl;
      break;
   }
}

唯一的区别是一个使用 std::array 而另一个使用 std::vector,但在这种情况下是否有理由使用一个而不是另一个假设你知道元素的具体数量?

最佳答案

如果您在编译时知道大小,请使用 std::array。它有两个优点:

  1. 没有动态分配(因此,也没有指针解引用访问内部数组)。
  2. size() 的值在编译时已知,使编译器更容易优化。例如,只有 5 次迭代的短循环可能会展开,从而消除条件分支。

顺便说一句,您所做的使这两项检查相似的编辑使您的问题更加集中,这很好,但惯用的 C++ 建议尽量少使用显式循环。所以 std::adjacent_find 甚至更好,并且可以在两个容器上使用。

关于c++ - 如果元素的数量已知,检查数组或 vector 中的所有元素是否相等更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44805020/

相关文章:

c++ - -fno-strict-aliasing 作为函数属性

c++ - 在 map 上使用 find_if 按值查找

java - 非法前向引用

ios - 为什么不是所有项目都附加到数组中?

c++ - 数组中的 SIGABRT C++ 如何转向 <vector>

c++ - QLcdNumber 奇怪的行为

c++ - 字符串流提取不起作用

arrays - float 到字符数组

c++ - std::vector 的问题

c++ - 在 std::set 中查找 std::vector 的元素