У меня есть сомнения по поводу использования std::vector
. Если у меня есть структура с объектом std::vector
с неопределенным пространством в памяти, если его необходимо перераспределить (std::vector
), является ли структура также перераспределенной? или только std::vector
?C++ вектор внутри структуры
Например:
struct cluster{
int a;
int b;
struct cluster* parent;
vector<struct cluster> children;
}
struct cluster obj = {2,1,...};
struct cluster *pobj = &obj;
for(int i = 0; i < 100 ; i ++){
children.push_back(i); //The capacity will be increased progressly, no?
}
Итак, вопрос: есть pobj==&obj
в конце for
цикла? Или obj
перераспределено из-за перераспределения ребенка std::vector
объект?
Надеюсь, я объяснил свои сомнения. Спасибо за ваше время.
Возможный дубликат: http://stackoverflow.com/questions/17528855/why-constant-size-of-struct-despite-having-a-vector-of-int – hmjd
Вопрос спорный. Это неопределенное поведение. Вы не можете создать экземпляр 'std :: vector' с неполным типом, который' cluster' находится в точке, где объявляется «childs». – juanchopanza
О, я не понимаю, что ты пытаешься сказать. Я использую эту структуру для просмотра сегментированного изображения, для алгоритма отслеживания цветов. После того, как изображение сегментировано, оно кодируется в RLE. наконец, я получил несколько кластеров пикселей, кодированных в RLE, которые должны быть «родительскими». Первоначально я использовал уникальный родительский и дочерний элементы для каждой структуры, но потом понял, что будут некоторые проблемы с перекрывающимися кластерами ... – Bardo91