我在C ++中从多维数组创建和获取值时遇到问题。我花了很多时间试图弄清楚为什么不编译。怎么了
代码如下: vector<vector<string>> vec; vec[0][0] = "asd"; cout << vec[0][0] << endl;
您不能使用下标运算符将值分配给空向量。
您可以使用诸如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;
或者,您可以最初使用所需数量的元素创建向量。在这种情况下,您可以使用下标运算符。
例如
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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句