检查向量的可用性(性能问题)
Posted
技术标签:
【中文标题】检查向量的可用性(性能问题)【英文标题】:checking a vector for its availability (performance issue) 【发布时间】:2013-04-19 10:57:45 【问题描述】:我想检查一个向量,看看它是否至少有一个元素。哪个更快?
if (vec.size())
...
或
if (vec)
...
有没有更好的解决方案?
【问题讨论】:
vector::empty()
.
“if(vec)”真的有效吗?!
后者无法编译,vector 没有隐式转换为布尔上下文中可接受的任何内容。 (@Kamouth:不,不是)
无论如何,任何方式都可能超快。但是!std::vector::empty()
清楚地表明了您的意图,因此是最佳选择。
同意,并且在某些容器上,empty() 实际上会更快,并且随着程序的发展更改容器的类型并不少见。
【参考方案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();
【讨论】:
以上是关于检查向量的可用性(性能问题)的主要内容,如果未能解决你的问题,请参考以下文章