点向量中的 push_back() 不起作用
push_back() in vector of a Point doesn't work
我在将类点推入向量时遇到问题。
我有一个类点:
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
值推送到末尾,但您看不到这些值,因为您的循环索引是从0
到nombrePoint
。
相反,您要做的是
vector<Point> vecteurPTries;
vecteurPTries.reserve(nombrePoint);
这将创建一个空向量,您为其保留了nombrePoint
元素的空间(不是绝对必要的,但会减少循环期间的重新分配和重新定位)。然后,给定的循环将按照您的意图填充此向量的前 nombrePoint
个元素。
我认为pointsTries[i]
是某种类似数组的点结构,看起来像您期望的列表。
无论如何,您声明了一个长度为 nombrePoint
的向量.在此行之后
vector<Point> vecteurPTries(nombrePoint);
它已经是nombrePoint元素长了。然后,您正在添加它,以便在您认为i
输出元素nombrePoint+i
时
尝试
vector<Point> vecteurPTries;
for(i = 0; i < nombrePoint; i++){
vecteurPTries.push_back(pointsTries[i]);
cout<<"vecteur "<<vecteurPTries.at(i).getX()<<" "<<vecteurPTries.at(i).getY()<<endl;
}
您可以使用默认构造的点实例的nombrePoints数量(x=1000,y=1000)构造向量。然后,在向量的末尾添加nombrePoint Point实例(这些是你从数组点Tries[i]复制的实例)。但是,您仅显示来自 0-nombrePoints(默认余量点)的元素。
定义后的向量如下所示:0... 点 (1000,1000)1... 点 (1000,1000)...nombrePoints-1 ...(1000,1000)
然后,在矢量的末尾添加新的点实例(带 push_back)。
将矢量定义更改为:
vector<Point> vecteurPTries;
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- C++Matching Brackets 2解决方案不起作用
- 为什么这段代码不起作用,我该如何解决?
- 我正在开发服务器,ip作为参数传递不起作用