Ваше предположение совершенно неверно; Вы не можете получить размер любым способом, близким к тому, что вы предлагаете. Это совершенно неопределенное и опасное поведение.
Вот псевдо-правило (т. Е. Оно не соответствует действительности, но если вы не понимаете, почему оно не соответствует действительности, оно относится к вам):
Не используйте указатели. Не используйте new
и delete
. (И не говорите using namespace std;
.)
Единственный способ, которым вы должны это делать, - это контейнеры C ++.
Вектор векторов будет первым кадром, хотя плоский вектор, к которому можно получить доступ с шагом, может быть лучше, а Boost.multi_array может быть даже лучшим:
std::vector< std::vector<double> > v (3, std::vector<double>(2));
std::array<std::array<double, 2>, 3>
std::vector<double> v(6);
и использовать v[i + 2 *j]
и т. Д.
Boost.MultiArray