使用指针向量到参考向量是非法的吗?
Using pointer vector to reference vector is illegal?
>我有一个问题。 可以使用指针向量作为参考向量吗?
Struct Child
{
int n;
void func(int _n)
{
n = _n;
};
}
struct Parent
{
std::vector<Child> vec;
}
void func(Parent* p)
{
std::vector<Child>& ref = p->vec; // is this ok?
int value = 10;
ref[0].func(value); // is this ok?
}
int main()
{
...
...
Parent p;
func(&p);
...
...
return 0;
}
编译器 gcc 4.4.7(在 c++11 下(
我想,如果更改引用的值可以吗?
ref[0].func(value)
谢谢。
std::vector<Child>& ref = p->vec; // is this ok? yes
int value = 10;
ref->func(value); // is this ok? no
ref 不是指针,因此不能使用成员访问运算符 ->
ref 是一个向量,所以你需要选择你想使用哪个孩子。
ref[ child_index ].func(value);
引用只不过是一个对象的另一个名称。所以这些都是一样的:
std::vector<Child>& ref = p->vec;
std::vector<Child>& vecAlias = ref;
int value = 10;
ref[0].func(value);
vecAlias[0].func(value);
p->vec[0].func(value);
不能更改引用的值。未初始化的引用不存在。 初始化后,无法更改它。 另一方面,指针具有类似的目的:它们允许从不同位置访问相同的数据。您始终可以更改指针指向的内容。但是指针也更容易出错,因为这样就可以未初始化或 null 初始化。因此,如果您不需要这种灵活性,请尝试坚持使用参考文献。
相关文章:
- 写入向量<向量<bool>>
- 函数向量_指针有不同的原型,我可以构建一个吗
- std::向量与传递值的动态数组
- 将值指定给向量(2D)的向量中的某个位置
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 如何使用向量的template_back函数
- 尝试通过多个向量访问变量时,向量下标超出范围
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何通过派生类函数更改基类中的向量
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何将ampl中的集合表示为c++中的向量
- 变量没有改变?通过向量的函数调用
- 迭代时从向量和内存中删除对象
- 向量 <int> a {N, 0} 和 int arr a[N] = {0} 的时间复杂度有什么区别
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 计算排序向量的向量中唯一值的计数
- 矩阵向量乘法(cublasDgemv)返回零
- 使用指针向量到参考向量是非法的吗?
- 我如何允许向量传递到info(),capture(),warn()等,同时避免非法扩展std名称空间
- 为什么是非法的:将指针向量复制到指向常量的指针向量中