C++ 为什么迭代向量在c++;?

C++ 为什么迭代向量在c++;?,c++,C++,我有一个汽车矢量 std::vector<Car> cars; std::矢量车; 我的问题是为什么下面的迭代会产生不同的结果 for ( Car c : cars){ std::cout << c.getID() << "--" << &c << std::endl; } 用于(车辆c:车辆){ std::cout您的循环变量声明Car c:cars需要从向量中复制cars。为了避免这种情况,只需引用向量中的ca

我有一个汽车矢量

std::vector<Car> cars;
std::矢量车;
我的问题是为什么下面的迭代会产生不同的结果

for ( Car c : cars){
    std::cout << c.getID() << "--" << &c << std::endl;
}
用于(车辆c:车辆){

std::cout您的循环变量声明
Car c:cars
需要从向量中复制cars。为了避免这种情况,只需引用向量中的cars,请使用
const Car&c:cars
Car&c:cars

因为在第一个版本中,您获取了向量中对象副本的地址。Chan将其设置为(Car c&:cars)
,您将获得与第二个版本相同的结果。
for(int i = 0; i < 4; i++){
    std::cout << cars[i].getID() << "--" << &cars[i] << std::endl;
 }