我在使用 C++ 中从多维数组创建和获取值时遇到问题。我花了很多时间试图弄清楚为什么这没有编译。这里有什么问题吗?
代码如下;
vector<vector<string>> vec;
vec[0][0] = "asd";
cout << vec[0][0] << endl;
最佳答案
您不能使用下标运算符为空 vector 赋值。
您可以使用 emplace_back
或 push_back
或 insert
等方法
例如
std::vector<std::vector<std::string>> vec;
vec.emplace_back( 1, "asd" );
vec.push_back( { 1, "fgh" } );
vec.insert( vec.end(), { 1, "jkl" } );
std::cout << vec[0][0] << std::endl;
std::cout << vec[1][0] << std::endl;
std::cout << vec[2][0] << std::endl;
或者您最初可以创建具有所需元素数量的 vector 。在这种情况下,您可以使用下标运算符。
例如
std::vector<std::vector<std::string>> vec( 1, std::vector<std::string>( 1 ) );
vec[0][0] = "asd";
std::cout << vec[0][0] << std::endl;
有很多方法可以完成任务。例如,您可以使用以下方法
std::vector<std::vector<std::string>> vec;
vec.resize( 1 );
vec[0].resize( 1 );
vec[0][0] = "asd";
std::cout << vec[0][0] << std::endl;
关于c++ - 在 C++ 中从多维 vector 创建和获取值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34154800/