我是C ++的新手,但遇到一个问题,即我拥有类对象的向量。将对象推入向量中时,地址会更改。我想知道即使取回值,我们也可以保持地址不变。
我已提及此post。我不太明白。
我正在分享我尝试过的示例。
vector <some_class> test;
some_class expected;
test.push_back(expected);
cout << &expected << endl; \\ 00EFF680
for (auto i = test.begin(); i != test.end(); ++i)
cout << &(*i) << ' '; \\00C2BA20
类的地址与将对象推入向量时的地址不同。
我也尝试过test.reserve(#some_number)
,但结果与上面相同。
我无法找出原因。如果有一个序列容器,它不会更改地址。我想知道
我认为也许迭代器的分配方式不同,所以我尝试了
for (int i = 0; i < test.size(); ++i)
cout << &test[i]<<' ';
与使用迭代器的结果相同。
我想检查矢量中是否存在对象,并进行一些操作。因此,我希望向量返回与在类中进行地址相等性检查时相同的地址(覆盖==运算符)。