【发布时间】:2015-06-08 18:22:17
【问题描述】:
我在使用向量的向量时遇到了一点问题。
我班上有一个std::vector<AObject*> _word,我言出必行:
AObject *object = new Letters();
_word.push_back(object);
后来我用:
for (size_t i = 0 ; i < _word.size() ; ++i)
_word[i]->draw();
^ 这可行,但我需要另一个实现
但我需要这样使用它:
在我的课堂上:std::vector<std::vector<AObject*> > _words;
AObject *obj = new Letters();
_word.push_back(obj);
_words.push_back(_word);
但是我得到了内存损坏..
所以我不能以这种方式使用我的向量向量:
for (size_t i = 0 ; i < _words.size() ; ++i)
_words[0][i]->draw();
谢谢!
编辑
我试过这个:
for (size_t i = 0; i < _words.size() ; ++i)
{
for (size_t j = 0 ; j < _word.size() ; ++j)
_words[i][j]->draw();
}
【问题讨论】:
-
在最后一个 for 循环中,您引用了
_world.size( ),它描述了 第一个 维度的大小,但您将其用作第二个维度的索引方面。这是未定义的行为。 -
你确定
new Letters()做你想做的事吗? -
所以我应该使用 _world[0].size() ?
-
@GlennTeitelbaum 是的,因为它适用于简单的矢量,当我画我的字时,屏幕上有字母
-
AObject *obj = new Letters();不要你自己使用new/delete管理内存!使用容器或smart pointers。
标签: c++ arrays vector segmentation-fault