C ++中的双向量问题

时间:2015-06-26 19:28:11

标签: c++ vector

所以我希望基本上制作一个双数组,但它通过向量来实现动态。但是我想我不完全理解这一点,因为我做错了导致我的矢量下标超出范围。以下是我的代码:

std::vector<std::vector<std::string>> m_menuList;
m_menuList[0].push_back(menuType);
m_menuList[0].push_back(location);

这可能是一个愚蠢的错误或完全错误,它确实正确编译,只是总是崩溃。

谢谢!

2 个答案:

答案 0 :(得分:5)

我们倾向于打电话给#34;双向量&#34; 2D矢量。 A&#34;三重矢量&#34;那么它将是一个3D矢量等等......它们中的很多都可以被称为多维向量。

您的问题是外部向量为空,因此没有m_menuList[0]。你可以这样做:

m_menuList.push_back(std::vector<std::string>(1, menuType));

将仅由menuType组成的向量推送到m_menuList的后面。

您还可以使用一定数量的空向量启动m_menuList,以便您当前的代码可以正常工作(假设您有一些整数n):

std::vector<std::vector<std::string>> m_menuList(n);

答案 1 :(得分:2)

初始化后,您必须resize()使用索引访问它。

std::vector<std::vector<std::string>> m_menuList;
m_menuList.resize(1);

但是当你插入不需要索引的对象时,你可以这样做:

m_menuList.push_back(menuType);
m_menuList.push_back(location);

OR

std::vector<std::vector<std::string>> m_menuList;
m_menuList.push_back(menuType);
m_menuList.push_back(location);