【问题标题】:I defined a list of arrays in c++ for representing a graph. But i can't seem to access the elements of the arrays我在 C++ 中定义了一个数组列表来表示一个图形。但我似乎无法访问数组的元素
【发布时间】:2021-06-27 04:50:47
【问题描述】:
基本上这就是我所做的,一个用作数组列表的 int 指针列表:
#include <list>
list<int> *l;
l = new list<int>[V + 1];
我可以 push_back(integer) 到 l[x] 以在列表上的“x”位置创建数组,我没有收到错误。但是当我使用 l[x][some_index] 访问列表中位置“x”的数组元素时,这是我得到的错误:
错误:“operator[]”不匹配(操作数类型为“std::__cxx11::list”和“int”)
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
标签:
c++
arrays
list
arraylist
【解决方案1】:
std::list 在 C++ 中实现为双向链表。它不支持对其元素的随机访问,因此它没有可用的[] 运算符。您可以使用front() 和back() 访问第一个和最后一个元素,您可以使用迭代器来迭代和访问列表的内容。
在您的示例中,您使用的是l[x][some_index]。 l[x] 将分配给动态分配的数组列表的第 x 个元素。但随后您将在返回的 std::list 对象上应用 [] 运算符。而那是不存在的。
您可能正在寻找使用std::vector。这是一个可变大小的容器,将元素连续存储在内存中,因此可以随机访问元素,您可以使用[] 运算符。
另一方面,你没有理由使用指针。你可以有一个向量的向量(比如std::vector<std::vector<int>>)。如果您确实需要分配东西,请根据您的需要使用智能指针,例如std::unique_ptr 或std::shared_ptr。