gpt4 book ai didi

C++ 无法从 vector 访问对象

转载 作者:太空狗 更新时间:2023-10-29 21:02:03 25 4
gpt4 key购买 nike

我是 C++ 的新手,所以这可能是一个简单的问题。我在 Predictor 类中声明了一个 vector vector :

class Predictor{
std::vector<std::vector<BitCounter>> data;
public:
Predictor();
void addBit(int x);
};

BitCounter 声明为:

class BitCounter {
short int count0 = 0;
short int count1 = 0;
public:
BitCounter();
short int getCount0();
short int getCount1();
void addBit(int x);
};

在 Predictor::addBit 中,我有以下几行:

BitCounter bit_counter = data[i][j];
printf("%p %p\n", &bit_counter, &data[i][j]);

这给了我两个不同的地址,我期望得到相同的地址。我犯了什么愚蠢的错误?

最佳答案

这会生成一个 BitCounter 拷贝:

BitCounter bit_counter = data[i][j];

这里,bit_counterdata[i][j] 中任何内容的拷贝,因此具有不同的地址。

如果您想引用嵌套 vector 中的元素,可以使用引用代替:

const BitCounter& bit_counter = data[i][j];

这里,bit_counterdata[i][j] 中任何内容的别名,因此地址运算符将为两者产生相同的地址:

const BitCounter& bit_counter = data[i][j];
std::cout << &bit_counter << "\n";
std::cout << &data[i][j] << "\n";

关于C++ 无法从 vector 访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16386666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com