我可以使用c
的参考变量(例如Customer &c
)吗?如果是这样的话?这比使用指针变量更好吗?
for(std::vector<Customer*>::const_iterator it = customers_.begin();
it != customers_.end() ; it ++)
{
Customer *c = (*it);
c->PrintName();
...
}
答案 0 :(得分:6)
是:
for(std::vector<Customer*>::const_iterator it = customers_.begin();
it != customers_.end() ; it ++)
{
Customer &c = *(*it);
c.PrintName();
...
}
(括号不是必需的,但可以更清楚。)
答案 1 :(得分:3)
你可以:
for(std::vector<Customer*>::const_iterator it = customers_.begin();
it != customers_.end() ; it ++)
{
Customer const &c = **it;
c.PrintName();
...
}
你可能不想这样做。很有可能customers_
应该是vector<Customer>
而非vector<Customer *>
,而不是调用PrintName
成员,您应该operator<<
重载Customer
}}。完成后,您将能够使用以下内容:
std::copy(customers_.begin(), customers.end(),
std::ostream_iterator<Customer>(std::cout, "\n"));