Ни одна из формулировок в стандарте не предлагает заданное значение для данных (), если вектор пуст ().
И вот какое-то окончательное доказательство того, почему вы не должны предполагать, что оно может быть равно нулю, даже хотя иногда это:
#include
#include
void value_of_data(std::vector const& v)
{
std::cout << "empty() = " << v.empty() << ", " << "data() = " << static_cast(v.data()) << std::endl;
}
int main()
{
std::vector v;
value_of_data(v);
v.resize(100, 0);
v.clear();
value_of_data(v);
}
пример вывода (gcc7.2, -O2, linux):
empty() = 1, data() = 0
empty() = 1, data() = 0x7ebc30