我有指针到机器的载体: 即,C++:访问使用指针向量元素到它的开始
vector<Machines*> m;
我填充指针载体和我知道机器的数量那存在。 如果我创建了一个指针到机器的一个指向矢量的开始:
Machines** m2;
m2 = & m[0];
将我是访问向量成员我递增该“0”?
m2[0]->dostuff;
m2[1]->dostuff;
...
这似乎对我可行,但我不确定是否允许。 :)
预先感谢您!
我有指针到机器的载体: 即,C++:访问使用指针向量元素到它的开始
vector<Machines*> m;
我填充指针载体和我知道机器的数量那存在。 如果我创建了一个指针到机器的一个指向矢量的开始:
Machines** m2;
m2 = & m[0];
将我是访问向量成员我递增该“0”?
m2[0]->dostuff;
m2[1]->dostuff;
...
这似乎对我可行,但我不确定是否允许。 :)
预先感谢您!
这是允许的,但你意识到你可以做到以下几点,没有理由使用Machines** m2;
?
vector<Machines*> m;
// Fill vector here
m[0]->dostuff(); // I assumed dostuff was a function
m[1]->dostuff();
哦,是的,我知道,我只是想知道上述是否会工作。我不以任何方式编码。非常感谢您的回答! :) – 2012-07-24 04:47:55
由于vector
保证分配连续内存,这似乎是正确的。但你为什么?您直接在vector
中拥有所有这些功能。
如果发生向量内存的重新分配,代码中的指针将无效。
将元素推送到矢量时可能会发生这种情况。
是的,它是允许的。 – timrau 2012-07-24 00:41:42
你为什么要这样做? – 2012-07-24 00:48:08
这当然是合法的,但是当你有一个向量时,看起来有点奇怪 - 侧面的问题:为什么一个指针向量?为什么不只是机器的矢量? – John3136 2012-07-24 00:49:18