c++ - 在 C++ 中从多维 vector 创建和获取值的问题

标签 c++ vector multidimensional-array

我在使用 C++ 中从多维数组创建和获取值时遇到问题。我花了很多时间试图弄清楚为什么这没有编译。这里有什么问题吗?

代码如下; vector<vector<string>> vec; vec[0][0] = "asd"; cout << vec[0][0] << endl;

最佳答案

您不能使用下标运算符为空 vector 赋值。

您可以使用 emplace_backpush_backinsert 等方法

例如

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/

相关文章:

c++ - 在没有 Wrapper 类的情况下调用 ActiveX 接口(interface)上的方法

c++ - 查看数字是否包含在未排序的两个数字区间内的最有效方法?

C++ 用固定数量的空字符串实例化 std::vector<std::string>

java - 是否有用于加速 vector 计算的 Java 库?

java - 在 Java 中使用 for 循环对 8x8 block 进行分组

python - tf.SequenceExample 与多维数组

python - 哪些语言具有与 Numpy 相似或等效的数组切片符号,为什么它不更常见?

C++多态性——找出派生类的类型

c++ - 如何高效地将大量元素追加到 stxxl vector 中?

c++ - CPLEX C++ 通过变量名获取变量的索引