总结 这两种方法都是判断std::vector是否为空的有效方式。选择哪种方法取决于个人偏好和具体的使用场景。empty()方法更加直观和易于理解,而size()方法则提供了更多的灵活性,例如可以用来判断vector的大小是否满足某个特定条件。 在实际编程中,可以根据具体需求选择合适的方法来判断std::vector是否为空。
vector底层是一块连续的内存,其迭代器本质上是指向这块内存首尾位置的两个指针。所以empty()函数是在检...
判断std::vector是否为空时,使用if(0==vec.size())是一种常见方式,但在不同编译器下,其优化程度和指令生成有所不同。最新版本的GCC、Clang与MSVC在最大优化设置下,都能优化到相同的指令序列,但MSVC会多出一个测试rax,-4的指令。此现象可能源自MSVC对指针对齐性的假设不同。回溯到老版本编译...
m_message是个vector<string>类型,可以看到函数内第2行pop_back代码未作任何判空操作,结果导致了程序崩溃。 笔者以为c++的vector实现在pop_back时会对size进行判断,所以就想当然pop_back了。 查了一下c++标准,空vector进行pop_back会导致未定义的行为,一定要注意。 c++标准关于pop_back的解释...
问你火车来了几节车厢,你得看仔细了,车头的GPS坐标,车尾的GPS坐标,差值再除以车厢长度。
一直用empty判断是否为空。直到有一天发现一个库中empty的意思是“清空”。从此以后痛改前非,老老实实...
尽量使用符合语义的方法
用最新版本的GCC/Clang/MSVC开最大优化实际测试了一下(注:MSVC是没有 /O3 的,最大是 /O2):GC...
size()是end()-begin().empty()是判断begin()==end().
我记得Effective STL里面有说这一条