草庐IT

non_empty

全部标签

c++ - vector 中的 size() 与 empty() - 为什么首选 empty()?

在调试某些东西时,我看到了STLvector::empty()实现:boolempty()const{return(size()==0);}我相信,每当我们探测vector的空性时,总是建议使用空而不是size()。但是看到这个实现,我想知道,这样做有什么好处?相反,在调用empty时会产生函数调用开销,因为它在内部调用size()==0。我认为empty()在列表的情况下可能会有所帮助,因为size()不能保证列表中的恒定时间。为了验证我的假设,我检查了列表实现,令人惊讶的是,在列表中也发现了相同的实现,return(size()==0);我现在有点困惑。如果empty内部使用siz

c++ - 为什么我得到 "non-aggregate cannot be initialized with initializer list"

std::mapm={{"MarcG.",123},{"ZulijaN.",456},{"JohnD.",369}};在Xcode中,我将C++语言方言设置为“C++0x[-std=c++0x]”,并将C++标准库设置为“支持C++0X的libc++LLVMC++标准库”我需要设置其他东西吗? 最佳答案 EDIT10/2013:这个答案真的很老了,AppleClang现在确实支持这个。自Clang3.0起尚不支持C++11初始化列表在此处查看实现状态:ClangC++11implementationstatus(如果只有编译器支持此

c++ - 为什么我得到 "non-aggregate cannot be initialized with initializer list"

std::mapm={{"MarcG.",123},{"ZulijaN.",456},{"JohnD.",369}};在Xcode中,我将C++语言方言设置为“C++0x[-std=c++0x]”,并将C++标准库设置为“支持C++0X的libc++LLVMC++标准库”我需要设置其他东西吗? 最佳答案 EDIT10/2013:这个答案真的很老了,AppleClang现在确实支持这个。自Clang3.0起尚不支持C++11初始化列表在此处查看实现状态:ClangC++11implementationstatus(如果只有编译器支持此

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - Effective C++ Item 23 Prefer non-member non-friend functions to member functions

在对类设计的一些事实感到困惑时,特别是函数是否应该是成员,我查看了Effectivec++并找到了第23条,即Prefernon-membernon-friendfunctionstomemberfunctions。使用Web浏览器示例第一手阅读该内容是有一定道理的,但是该示例中的便利函数(在书中像这样命名非成员函数)会改变类的状态,不是吗?那么,第一个问题,他们不应该是成员(member)吗?进一步阅读,他考虑了STL函数,实际上某些类没有实现的一些函数是在STL中实现的。按照本书的思路,它们演变成一些方便的函数,这些函数被打包到一些合理的命名空间中,例如std::sort、std:

c++ - 在 C++ 编译期间出现 'has virtual method ... but non-virtual destructor' 警告是什么意思?

#includeusingnamespacestd;classCPolygon{protected:intwidth,height;public:virtualintarea(){return(0);}};classCRectangle:publicCPolygon{public:intarea(){return(width*height);}};有编译警告Class'[C@1a9e0f7'hasvirtualmethod'area'butnon-virtualdestructor如何理解这个警告以及如何改进代码?[EDIT]这个版本现在正确吗?(试图给出答案以阐明自己的概念)#inc

c++ - 在 C++ 编译期间出现 'has virtual method ... but non-virtual destructor' 警告是什么意思?

#includeusingnamespacestd;classCPolygon{protected:intwidth,height;public:virtualintarea(){return(0);}};classCRectangle:publicCPolygon{public:intarea(){return(width*height);}};有编译警告Class'[C@1a9e0f7'hasvirtualmethod'area'butnon-virtualdestructor如何理解这个警告以及如何改进代码?[EDIT]这个版本现在正确吗?(试图给出答案以阐明自己的概念)#inc

C++ STL map::erase a non-existing key

关于C++STL映射,按键删除:-size_typemap::erase(constkey_type&x);删除不存在的key是否合法?即下面的片段可以吗?mapmymap;mymap['c']=30;mymap.erase('c');mymap.erase('c');mymap.erase('D');干杯 最佳答案 是的,事实上,std::map::erase()返回一个size_type,它指示已删除的键数。因此,它返回0表示没有删除任何内容,而返回1表示map已删除的内容。 关于C

C++ STL map::erase a non-existing key

关于C++STL映射,按键删除:-size_typemap::erase(constkey_type&x);删除不存在的key是否合法?即下面的片段可以吗?mapmymap;mymap['c']=30;mymap.erase('c');mymap.erase('c');mymap.erase('D');干杯 最佳答案 是的,事实上,std::map::erase()返回一个size_type,它指示已删除的键数。因此,它返回0表示没有删除任何内容,而返回1表示map已删除的内容。 关于C

C++:string.empty() 是否总是等价于 string == ""?

我可以假设给定std::stringstr;...//dosomethingtostr以下陈述是否总是正确的?(str.empty()==(str=="")) 最佳答案 回答是的。这是来自bits/basic_string.h的相关实现,basic_string的代码:/***Returnstrueifthe%stringisempty.Equivalentto*this=="".*/boolempty()const{returnthis->size()==0;}讨论尽管std::string的两种形式是等价的,您可能希望使用.em