vector:按原样存储对象,并且在检索时获得相同的地址

时间:2019-06-21 10:20:04

标签: c++ arrays vector memory-address

我是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]<<' ';

与使用迭代器的结果相同。

找回我推送地址的主要动机是

我想检查矢量中是否存在对象,并进行一些操作。因此,我希望向量返回与在类中进行地址相等性检查时相同的地址(覆盖==运算符)。

0 个答案:

没有答案