c++ - C++中的双 vector 问题

标签 c++ vector

所以我基本上想制作一个双数组,但通过 vector 使其动态化。但是我想我不完全理解这一点,因为我做错了什么导致我的 vector 下标超出范围。下面是我的代码:

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

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

谢谢!

最佳答案

我们倾向于将“双 vector ”称为2D vector 。然后“三 vector ”将是 3D vector 等等...它们中的全部都可以称为多维 vector 。

您的问题是外部 vector 为空,因此没有 m_menuList[0]。你可以改为:

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

这会将一个仅由 menuType 组成的 vector 推到 m_menuList 的后面。

您还可以使用一定数量的空 vector 启动 m_menuList,这样您当前的代码就可以工作(假设您有一些整数 n):

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

关于c++ - C++中的双 vector 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31080770/

相关文章:

c++ - 如果 QStateMachine 中的转换成功,则从类发出信号

c++ - QSqlError ("' ,"' ,"' ,) 在 QT 小部件应用程序中

c++ - 在 Makefile 中查找 Boost 库

vector - 为什么 &[T] 参数也接受 &Vec<T>?

c++ - 扩展 vector 迭代器以访问包含的类/结构的数据成员

c++ - 如何通过 C++ 中的数据获取 vector 的索引?

c++ - 排序然后搜索( vector C++)

c++ - 如何将一个 "unknown"的派生类声明为基类的成员,并允许派生版本的成员函数被调用?

c++ - 在 Linux 系统调用中的 C 程序中出现错误 ‘\342’ stray ‘\210’ stray ‘\222’

java - 链表 vector