vector <int> *a;
a->push_back(10);
*a[0] = (*a[0])%5;
但这给了我一个错误。在最后一行。为什么? 我做对了吗?
我取消引用a,然后访问item [0],模数。
Error: no match for 'operator*' in '** a'
答案 0 :(得分:6)
首先,如果 需要 将其用作指针,则必须为此vector
分配内存,例如
vector <int> *a = new vector <int>;
我强烈建议您使用
vector <int> a;
相反,如果可能的话。
另外,注意operator precedence - operator[]
的优先级高于*
。
尝试
(*a)[0] = (*a)[0]%5;
(意思是:*a[0]
与您不想要的*(a[0])
相同)
答案 1 :(得分:2)
[]
运算符的优先级高于一元*
,因此它被解析为*(a[0])
而不是(*a)[0]
。
答案 2 :(得分:0)
(*a)[ 0 ]
a->at( 0 )
&lt; - 恕我直言,它更好。 at
检查了向量的边界,但[]
没有