gpt4 book ai didi

c++ - 使用运算符 = 将 vector (从 vector 的 vector 中提取)分配给另一个 vector 时出错

转载 作者:行者123 更新时间:2023-11-30 03:41:39 25 4
gpt4 key购买 nike

我从我的真实代码中推断出这段示例代码:

vector<vector<unsigned short int> > v;
vector<unsigned short int> c;
vector< vector<unsigned short int> > *suffC;
vector<unsigned short int> d;
int index =0;

c.push_back(2);
c.push_back(3);
v[0]=c;

suffC = &v;
d = suffC[index];

最后一条指令在编译时给我错误。就好像编译器的两个操作数(operator =)是两种不同的类型。我哪里错了?

最佳答案

按照 C 的规则,C++ 以两种方式处理指针:

  • 作为指针,让您将 * 应用于它们,并且
  • 作为数组,让您对它们应用下标运算符 []

当您将下标应用于指针 suffC 时,C++ 使用第二个选项 - 它将您的指针视为 vector 的 vector 数组。为了获得正确的分配,请先将 * 应用于您的指针,然后再应用下标。这将确保应用 std::vector 的自定义下标运算符。

请注意 \[\] has higher precedence than * ,因此您需要在 *suffC 两边加上括号:

(*suffC)[...]

关于c++ - 使用运算符 = 将 vector (从 vector 的 vector 中提取)分配给另一个 vector 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com