所以我希望基本上制作一个双数组,但它通过向量来实现动态。但是我想我不完全理解这一点,因为我做错了导致我的矢量下标超出范围。以下是我的代码:
std::vector<std::vector<std::string>> m_menuList;
m_menuList[0].push_back(menuType);
m_menuList[0].push_back(location);
这可能是一个愚蠢的错误或完全错误,它确实正确编译,只是总是崩溃。
谢谢!
答案 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);