Поскольку и std::vector<>empty()
, и std::vector<>::size()
являются const
функциями-членами и не могут изменять содержимое вектора, я могу видеть только один способ получить этот результат - использовать несколько потоков или вызывать неопределенное поведение.
Вероятными кандидатами являются другие потоки, модифицирующие вектор и портящие внутренние компоненты вектора из-за переполнения буфера и т.п.
Это
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> vecList;
vecList.push_back(1);
vecList.push_back(2);
vecList.push_back(3);
if (!vecList.empty())
{
std::cout << "List count = " << vecList.size() << std::endl;
if (vecList.empty())
{
std::cout << "List is empty" << std::endl;
}
}
return 0;
}
печатает List count = 3
для меня.Бьюсь об заклад, он делает то же самое для вас.Если так, то в коде, который вы не показываете, должно быть что-то портит.
Единственный способ выяснить, что это такое (кроме публикации правильного фрагмента здесь и предположить, что кто-то угадал), - это постепенно удалять весь дополнительный код, пока проблема не исчезнет, а затем посмотреть на кодвызвал это.