Почему следующий код возвращает 12 в кодовых блоках 13.12 и 20 в visual studio 2010? Я также смущен, почему он возвращает любое другое значение, чем 0, поскольку векторы являются динамическими, и я не отбрасывал никаких элементов.Почему sizeof возвращает разное значение для разных IDE?
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
#include <stdio.h>
#include <vector>
using namespace std;
class c
{
public:
vector<int>v;
c()
{
v.clear();
}
};
int main() {
int m;
c ob;
cout<< sizeof(ob);
}
Подумайте, как реализовать вектор, и вы можете понять, почему размер вряд ли когда-либо будет 0. Как минимум, он будет содержать, например, указатель и счетчик. Помните, что размер вектора не совпадает с размером содержимого вектора. – icabod
btw его компилятор, который компилирует ваш код, а не IDE – user463035818
Также это не потому, что у вектора нет элемента, который он не потребляет.Я не знаю реализации вектора, но он может иметь свои собственные внутренние атрибуты: указатель на сохраненные данные (даже если это просто NULL), количество элементов (даже если это всего лишь 0), ... – nlko