c++ - Point vector 中的 push_back() 不起作用

标签 c++ vector push-back

<分区>

我在将类 Point 插入 vector 时遇到问题。

我有一个类点:

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

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

我创建了一个这样的 vector :

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 将条目添加到 vector 的末尾,但是您实例化了大小为 nombrePoint 的 vector ,这将使其创建默认初始化的 nombrePoint 值。然后,您将另一个 nombrePoint 值压入末尾,但您看不到这些值,因为您的循环索引是从 0nombrePoint

你想做的是

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

这将创建一个空 vector ,您已为其保留空间用于 nombrePoint 元素(并非绝对必要,但会减少循环期间的重新分配和重定位)。然后,给定的循环将按照您的预期填充此 vector 的第一个 nombrePoint 元素。

关于c++ - Point vector 中的 push_back() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282513/

相关文章:

C++ vector push_back 带指针

c++ - 为什么持有类类型的 vector 在push_back()时会再次调用复制构造函数?

c++ - 如何在 visual studio 中可视化内存中的实际 hexdec

c++ - 带有 WS_EX_COMPOSITED 的无闪烁选项卡控件

c++ - 用unique_pointers填充 vector

c++ - 将 const int std::array 的 n 个元素复制到一个 int vector 中。怎么做?

c++ - 通过每次调整 vector 的大小在 vector 中插入一个元素是否需要更多时间?

C++ - 如何为类模板声明函数模板友元

c++ - 为什么 std::generate 可以与 lambda 生成器一起使用而 std::fill 不能?

c++ - 获取 vector 的内容并将它们放入文本文件中