나는 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?
}
그래서, 질문은 : for
루프의 끝에서 pobj==&obj
입니까? 또는 자식 std::vector
의 재 할당 때문에 obj
이 재 할당 되었습니까?
나는 의심의 여지가 있었으면 좋겠습니다. 시간 내 주셔서 감사합니다.
가능한 복제본 : 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