【问题标题】:How to iterate list of object pointed by pointer?如何迭代指针指向的对象列表?
【发布时间】:2019-09-24 21:59:21
【问题描述】:
如何从指针指向的对象列表中获取数据?
std::list<object> *myList;
std::list<object>::iterator itr;
for(itr = myList.begin(); itr != myList.end(); itr++) {
std::cout << itr->data;
}
【问题讨论】:
标签:
c++
c++11
pointers
stdlist
【解决方案1】:
嗯。假设object 有一个data 成员可以按原样发送到stdout,你应该写的是
std::list<object> *myList;
std::list<object>::iterator itr;
for(itr = myList->begin(); itr != myList->end(); itr++) {
std::cout << itr->data;
}
但是,老实说,在 C++11 中,写起来要好得多:
std::list<object> *myList;
for(const object & obj : *myList) {
std::cout << obj.data;
}
这样你就不需要迭代器声明了……
【解决方案2】:
myList 是一个指针...
改为myList->begin() 等
//
struct object
{
int data{};
};
std::list<object> *myList{nullptr};
//myList=&xxx;
std::list<object>::iterator itr;
for(itr = myList->begin(); itr != myList->end(); itr++)
{
std::cout << "data: " << itr->data;
}
//