如何操纵向量的指针?

时间:2014-04-02 15:11:54

标签: c++

vector <int> *a;

a->push_back(10);

*a[0] = (*a[0])%5;

但这给了我一个错误。在最后一行。为什么? 我做对了吗?

我取消引用a,然后访问item [0],模数。

Error: no match for 'operator*' in '** a'

3 个答案:

答案 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)

  1. (*a)[ 0 ]
  2. a->at( 0 )&lt; - 恕我直言,它更好。 at检查了向量的边界,但[]没有