Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        5年前关闭。
                                                                                            
                
        
我将类Point推入向量时遇到问题。

我有一个课堂要点:

Point::Point(){
this->X=1000;
this->Y=1000;
}

Point::Point(int x1, int y1){
this->X = x1;
this->Y = y1;
}


我创建一个像这样的向量:

vector<Point> vecteurPTries(nombrePoint);
for(i = 0; i < nombrePoint; i++){
    vecteurPTries.push_back(pointsTries[i]);
    cout<<"vecteur "<<vecteurPTries.at(i).getX()<<" "<<vecteurPTries.at(i).getY()<<endl;
}


而不是:

point trie 487 3
point trie 492 42
point trie 430 272
point trie 440 165
point trie 423 209
point trie 327 229
point trie 307 249
point trie 340 112
point trie 44 378
point trie 73 158


我有:

vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000
vecteur 1000 1000


有人可以解释我为什么吗?有什么问题?

谢谢。

最佳答案

您并没有显示所有代码,但是我认为问题是您使用push_back在向量的末尾添加了条目,但是实例化了大小为nombrePoint的向量,这将导致它创建nombrePoint值默认初始化。然后,您在末尾再推另一个nombrePoint值,但由于循环索引是从0nombrePoint,因此看不到这些值。

您要做的是

vector<Point> vecteurPTries;
vecteurPTries.reserve(nombrePoint);


这将创建一个空向量,您可以为该向量保留nombrePoint元素的空间(并非绝对必要,但会减少循环期间的重新分配和重新分配)。给定的循环将按照您的意图填充此向量的前nombrePoint个元素。

10-04 14:28