所以我期待基本上是一个双数组,但它通过向量动态。不过,我想我不完全理解这一点,因为我做错了什么导致我的向量下标超出范围。这里是我的代码:双向矢量问题在c + +
std::vector<std::vector<std::string>> m_menuList;
m_menuList[0].push_back(menuType);
m_menuList[0].push_back(location);
这可能是一个愚蠢的错误或完全错误的东西,它确实编译,只是总是崩溃。
谢谢!
所以我期待基本上是一个双数组,但它通过向量动态。不过,我想我不完全理解这一点,因为我做错了什么导致我的向量下标超出范围。这里是我的代码:双向矢量问题在c + +
std::vector<std::vector<std::string>> m_menuList;
m_menuList[0].push_back(menuType);
m_menuList[0].push_back(location);
这可能是一个愚蠢的错误或完全错误的东西,它确实编译,只是总是崩溃。
谢谢!
我们倾向于称为“双向量”二维向量。然后,一个“三重矢量”将是一个三维矢量等等......它们中的大部分都可以称为多维矢量。
你的问题是,外部矢量是空的,所以没有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);
你必须初始化后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);
啊好吧!非常感谢你! :d –
没关系啊,我还以为2D向量意味着像某些类型的图形矢量的! (脸红)......感谢您的帮助! –