从输入读取大小后,我需要初始化一个2维数组的forward_list。
class Foo{
forward_list<int> * koo;
int A, B;
void boo(){
scanf("%d",&A);
scanf("%d",&B);
koo = new forward_list<int>[A][B];
koo[0][0] = 1;
}
};
编译器:
cannot convert ‘std::forward_list<int> (*)[1]’ to ‘std::forward_list<int>*’ in assignment adjList = new forward_list<int>[A][A];
CLion IDE:订阅的值不是数组(在koo [0]处)
我没有做太多的C ++,所以我不太清楚这是怎么回事。我该怎么做呢?我需要访问O(1)中的所有forward_list,因此,我更喜欢数组或通常比较快的东西。
顺便说一句:不确定是否将其称为动态初始化,请告诉我是否应该更改标题。
谢谢。
答案 0 :(得分:0)
forward_list
无法满足您的性能要求:“我需要访问O(1)中的所有forward_list”,可以在此处进行比较:https://en.wikipedia.org/wiki/Linked_list#Linked_lists_vs._dynamic_arrays您可以看到索引为forward_list
和其他链接列表变体为 O(n)。
提供所需的 O(1)索引的最简单的容器类型是vector
或其他动态数组变体。我相信您可以通过以下方式满足您的当前需求:
vector<vector<int>> koo(A, vector<int>(B));
应该指出的是,尽管这将满足您的性能要求,a vector
of vector
s isn't a great solution;但您可以将其视为一个很好的权宜之计。