派生向量:执行操作

Derived vector: Perform operations

本文关键字:操作 执行 向量 派生      更新时间:2023-10-16

我已经从std::vector<int>派生(我知道我不应该,但我只是想测试它)。现在我可以实例化它并分配一些值:

MyVector v(5);
v[0]=3;

我甚至可以返回值:

cout << v[0];

但是,如果我想在类中做一些操作,我如何访问值?比如:

int func(int a){
   return this->[0] + a; // EXAMPLE
}

如问题下的评论所述:

return (*this)[0] + a;应该工作。- didierc 5 hours ago

此外,由于vector以线性方式(像数组一样)布局内存,您还可以通过指针访问保存值的内存,如下所示:

int *ptr = &(*this)[0];
// read an integer from the console into the 3rd element of the vector
scanf("%d", ptr + 2);

如果您有一个字符的vector,并且您需要将char*传递给字符串函数之类的东西,例如,这可能很有用。

但是需要注意的是,vector<bool>不会以相同的方式运行(布尔值在内部存储在位域中,而不是一个布尔数组,参见http://isocpp.org/blog/2012/11/on-vectorbool)。