所以我期待基本上是一個雙數組,但它通過向量動態。不過,我想我不完全理解這一點,因爲我做錯了什麼導致我的向量下標超出範圍。這裏是我的代碼:雙向矢量問題在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向量意味着像某些類型的圖形矢量的! (臉紅)......感謝您的幫助! –