关于 vector 中不能存放引用,这是一个在初始C++时候就应该知道的问题,但是我居然没注意,还好及时发现了。
《C++ primer》上说 vector 中不能存放引用的原因是:引用不支持一般意义上的赋值操作,而 vector中元素的两个要求是:
1.元素必须能赋值
2.元素必须能复制
int a = 1;
int c = 2;
int & b = a;
b = c;
如上述例子中 ,b = c,不是一般意义上的赋值操作,因为 b 元素时不存在的,对 b 元素取地址,取到的是 a 的地址,此处的赋值操作也会将值赋给 a,而不是 b 本身,因此,vector 的元素不能是引用
我自己试了一下,将发现在 vector 中存放引用报错的原因类似如下:
int & * p;
即,不允许定义引用类型的指针。