C ++引用与for循环中变量的指针?

时间:2011-11-07 19:34:01

标签: c++ for-loop iterator reference

我可以使用c的参考变量(例如Customer &c)吗?如果是这样的话?这比使用指针变量更好吗?

    for(std::vector<Customer*>::const_iterator it = customers_.begin();
        it != customers_.end() ; it ++)
    {
        Customer *c = (*it);
        c->PrintName();
        ...
    }

2 个答案:

答案 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"));