容器为空用 size()==0 还是用empty() 函数,两者有什么区别吗?
容器为空用 size()==0 还是用empty() 函数,两者有什么区别吗?
[解决办法]
从字面上就应该使用empty()
否则要函数名干吗?
[解决办法]
应该都可以,你可以自己看看源代码呀
下面是vector的:
size_type size() const
{// return length of sequence
return (_Mysize);
}
bool empty() const
{// test if sequence is empty
return (size() == 0);
}
[解决办法]
很多书里说了用 empty
[解决办法]
如果不考虑编译器优化的话,empty效率比0 == size差(多了一次函数调用)!
至于为什么要有empty,只是让这个类看起来更完整,比如我举个例子:
true 和 false
两者只要存在一个即可,因为true == !false
任何语言都有true和false!
还有一种情况,就是简化编程时的输入,比如判断一个类为空,要判断3个变量(甚至更多,可能还要计算什么的):
if (!a && !b && !c)
if (empty())
比较上面两个句子,效果一样,但后者更简洁,可读性强。
[解决办法]
用empty吧
[解决办法]
其实含义是一样的,只不过empty()用起对代码的可读性要好些,
[解决办法]
拿strings来说,size()和length()两个成员函数所做的事情相同,size()是获取容器元素个数的通用成员函数,length()对应于一般的C-string strlen()函数,传回字符串长度。成员函数empty()用来检验字符数是否为0,亦即字符串是否为空。应该优先使用empty()函数,因为它比size()或length()来得快。
[解决办法]
Do u mean this?
vector<int> vtWhat;vtWhat[1];vtWhat[2];vtWhat[3];cout<<vtWhat.size()<<endl;return 0;