通过const Rerefence传递向量并将元素添加到向量
Passing a vector by const rerefence and adding an element to the vector
我正在尝试了解以下成员函数:
void Date::setDays(const std::vector<Date> &days){
Date d(1, 1, 1);
m_days = days;
m_days.push_back(d); // valid.
days.push_back(d); // invalid.
}
在属于Date
类的上方成员函数中,我是通过引用作为const传递的days
。我可以理解为什么在days
中添加元素是非法的,因为它是const
。但是,我的困惑是,如何将元素添加到m_days
中?它不是指与days
相同的向量吗?当我将元素添加到m_days
时,这是否意味着我也将元素添加到days
?
您分配了days
的m_days
A copy 。它不是不是相同的向量,并且如果m_days
不是const
(显然不是因为您只是分配给它),则可以向其添加元素。您对m_days
无所作为会以任何方式影响days
。
m_days = days
使days
数组的复制,即m_days
是另一个与days
无关的向量,该向量具有days
数组的副本。您对m_days
的任何更改都不会影响days
。因此,不违反days
的constness。
相关文章:
- 向量元素的引用地址与它所指向的向量元素的地址不同.为什么
- 在 C++ 中输出枚举类类型的向量元素
- 用向量的向量元素初始化向量的空向量
- 为什么不允许使用可变长度数组作为向量元素?
- 在函数中传递向量元素
- 使用 Rcpp 加速替换迭代算法中的列表和向量元素是否合法?
- 返回向量元素的 l 值的正确方法是什么?
- 当向量增长时,指向向量元素的C++指针是否无效
- 如何在C++中从一个向量元素减去std::unorderede_map向量元素并更新它
- C++:向量元素赋值导致访问冲突
- 将向量元素与字符串元素进行比较,而不初始化向量
- 从2D矢量中找出最小尺寸的向量元素的更好方法
- 当我尝试将一个向量元素的值分配给另一个向量元素时,为什么我的应用程序会崩溃
- 使用递归C++向量元素的总和
- 如何查找为数组中的最低值编制索引的向量元素
- 限制指针访问STL ::向量元素
- 访问索引指向向量元素时的seg故障 - 做错了什么
- 如何使用指针访问向量元素的各个元素
- 向量元素数据损坏了Find()操作
- 将字符值分配给向量元素.C