我正在为项目的矢量指针工作,但我无法打印向量中的所有元素。我试过运算符重载,但它不正确:
vector<list<int*>*> *v = new vector<list<int*>*> {
new list<int*> {new int(2), new int (7)},
new list<int*> {new int(2), new int (7)}
};
for (int i = 0; i < v->size(); i++) {
auto a = v[i].begin();
while (a != v[i].end()) {
cout << **a;
a++;
}
}
试试这个:
for(const auto& i : *v)
for(const auto& j: *i)
cout<<*j<<" ";
是否有理由使用这么多指针?你的代码可以更加简单:
vector<list<int>> v {
list<int> {2, 7},
list<int> {2, 7}
};
for(const auto& i : v)
for(const auto& j: i)
cout<<j<<" ";
只是有太多的指针,但要以与你所做的相同的方式正确地重写你的代码,试试这个
for (int i = 0; i < v->size(); i++) {
auto a = (*v)[i]->begin();
while (a != (*v)[i]->end()) {
cout << **a;
a++;
}
}
因为v
是一个指向矢量的指针,所以你必须编写(*v)[i]
来从矢量中获取一个元素。然后,因为该元素本身是一个指向列表的指针,所以你必须编写->begin()
来获取列表迭代器。
没有这么多指针就可以编写程序。