使用 push_back() 在向量中添加项目,向量的大小会增加但无法从向量中读取值
Use push_back() to add an item in a vector, the size of the vector increase but can't read values from the vector
我有一个ColorName类和一个ColorNameLookup类。在类ColorNameLookup中,有一个公共成员:vector colorList。类ColorNameLookup的构造函数是将项添加到向量colorList中。
我在向量colorList中添加了140个项目。我检查了矢量的大小是否正确,但我无法从矢量中读取任何值。
例如,我初始化一个变量ColorNameLookup findColor
,并使用函数findColor.colorList[0].getR()
来获得第一个元素的R值。返回的是一个未初始化的整数值。
我的代码如下所示:
类别颜色名称:
#include "ColorName.h"
ColorName::ColorName(std::string name, int r, int g, int b)
{
r = r;
g = g;
b = b;
name = name;
}
ColorName::ColorName(void)
{
}
ColorName::~ColorName(void)
{
}
int ColorName::computeMSE(int pixR, int pixG, int pixB) {
return ((pixR-r)*(pixR-r) + (pixG-g)*(pixG-g) + (pixB-b)*(pixB-b)/3);
}
int ColorName::getR() {
return r;
}
int ColorName::getG() {
return g;
}
int ColorName::getB() {
return b;
}
std::string ColorName::getName() {
return name;
}
类ColorNameLookup:
ColorNameLookup::ColorNameLookup(void)
{
colorList.push_back(ColorName("AliceBlue",0xF0,0xF8,0xFF));
//...139 push_back
colorList.push_back(ColorName("YellowGreen",0x9A,0xCD,0x32));
}
ColorNameLookup::~ColorNameLookup(void)
{
}
std::string ColorNameLookup::getColorName(int r, int g, int b) {
ColorName closestMatch; // = NULL;
int findFlag = 0;
int minMSE = std::numeric_limits<int>::max();
int mse;
for (ColorName c : colorList) {
mse = c.computeMSE(r, g, b);
if (mse < minMSE) {
findFlag = 1;
minMSE = mse;
closestMatch = c;
//printf("Find color!n");
}
}
if (findFlag ==1){
return closestMatch.getName();
}
else
return NULL;
}
您需要这个:
ColorName::ColorName(std::string name, int r, int g, int b)
{
this->r = r;
this->g = g;
this->b = b;
this->name = name;
}
r = r
只会将相同的本地r
分配给它自己,并保持成员变量未初始化。
对于初始化这些成员,最好使用初始化器列表:
ColorName::ColorName(std::string name, int r, int g, int b) :
r(r),
g(g),
b(b),
name(name)
{
}
相关文章:
- 数组索引的值没有增加
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 使用某些用户输入向量[x]++增加向量的索引
- 如何引用其他类中的函数以向量增加价值
- C 为向量的切片增加了常数
- 使用“变换”创建增加的向量
- 如何在c++中增加向量中k个连续元素的值
- 为什么在保留向量中插入空结构会增加内存
- 增加二维字符串向量中外部向量的大小
- 使用 push_back() 在向量中添加项目,向量的大小会增加但无法从向量中读取值
- 递归中如何增加向量中局部变量的值
- 尝试使用while循环取消分配向量,任务管理器显示内存使用正在增加
- 从图复制到向量后顶点数增加
- 将对象存储在std::向量中是否会增加对象的寿命
- 如何在一行c++中初始化对向量,同时增加对值