如果您已经知道要比较的元素数量(在我的例子中是 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
。它有两个优点:
- 没有动态分配(因此,也没有指针解引用访问内部数组)。
size()
的值在编译时已知,使编译器更容易优化。例如,只有 5 次迭代的短循环可能会展开,从而消除条件分支。
顺便说一句,您所做的使这两项检查相似的编辑使您的问题更加集中,这很好,但惯用的 C++ 建议尽量少使用显式循环。所以 std::adjacent_find
甚至更好,并且可以在两个容器上使用。
关于c++ - 如果元素的数量已知,检查数组或 vector 中的所有元素是否相等更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44805020/