【发布时间】:2015-11-05 21:05:42
【问题描述】:
struct Struct_t {
int Value1;
int Value2;
};
vector<Struct_t> Struct;
Struct.resize(10, Struct_t());
for (int i = 0; i < 10; ++i)
{
Struct[i].Value1 = (i + 10) * 3;
Struct[i].Value2 = (i + 5) * 2;
}
如何创建指向 Struct[i] 的指针?
我想做的基本上是这样的,但我相信这可以做得更好:
int value = 6;
Struct_t temp = Struct[value], *s;
s = &temp;
s->Value1 = 42;
s->Value2 = 6;
主要目标是,我可以使用 1 行/函数轻松创建指向 Struct[n] 的指针。
【问题讨论】:
-
做这样的操作会导致指向无效迭代器的指针。
-
您是否考虑过使用参考文献?例如
Struct_t& tmp = Struct[value]; tmp.Value1 = 23;。下面提到的关于悬空指针的警告仍然适用,仅在您知道向量不会被重新分配的受限范围内使用。
标签: c++ arrays pointers vector struct