vector<int> &back = res.back();
vector<int> back = res.back();
vector<int> &back = res.back();
和 vector<int> back = res.back();
的区别在于赋值的方式和结果的不同。
-
vector<int> &back = res.back();
:- 这是一个引用赋值操作,
back
是一个指向res.back()
返回的向量的引用。 - 如果
res.back()
返回的向量发生更改,back
也会反映这些更改,因为它们引用同一个对象,同理back
则res.back()
同样更改。 - 这种赋值方式不会创建新的向量副本,只是创建了一个指向现有向量的引用。
- back变量在res.push_back(newInterval);会变为空悬引用,所以push_back后,若再次使用back应新建变量
- 这是一个引用赋值操作,
-
vector<int> back = res.back();
:- 这是一个值赋值操作,
back
是res.back()
返回的向量的副本。 - 如果
res.back()
返回的向量发生更改,back
不会受到影响,因为它们是独立的对象。 - 这种赋值方式会创建一个新的向量副本,其中包含与原始向量相同的元素。
- 这是一个值赋值操作,
总结:res.back()
返回的是引用,但是如果希望更改res.back()
中的元素,要用引用来接【引用赋值】,也就是 vector<int> &back = res.back();
否则采用【值赋值】vector<int> back = res.back();