c++ - 指针 vector 的大小

标签 c++ pointers vector capacity

我正在编写一个 BitVector 类,其中有一个返回 BitVector 容量的方法。我的想法是调用 std::vectorcapacity(),但我收到一个错误,我有点困惑。下面是我的方法:

int BitVector::Size() {
int size = (int) this->bitVector().capacity();
}

我遇到的错误是“表观调用的表达式进行括号必须具有(指向)函数类型。这里有什么问题?

有关我的类(class)的其他背景信息:

我的 BitVector 类具有通常的公共(public)构造函数、解构函数等,然后是一个指向 vector 的私有(private)指针,如下所示:

private:
std::vector<uint8_t>* bitVector;

在我的构造函数中,我将指针指向堆上的 vector ,如下所示:

BitVector::BitVector(int numBits) {
this->bitVector = new std::vector<uint8_t> (numBits, 0);
}

最佳答案

我不认为你需要一个指针,只需将其声明为:

private:
std::vector<uint8_t> bitVector;

您不需要 this->访问类成员的前缀,以及 int不是表达容量值的好类型(值为负的容量意味着什么?)。所以,在你的函数中我会这样做:

int BitVector::Size() {
   auto size = bitVector.capacity();
}

但如果确实需要一个指针,你可以这样做:

int BitVector::Size() {
   auto size = bitVector->capacity();
}

使用指针引用

已编辑

正如@Donnie所指出的,该函数的返回类型也变得错误。如果您使用 C++14,并假设您想返回 size变量,只需让编译器使用 bitvector.capacity() 即可让您的生活变得简单正在使用来保持其值(value)观。所以你的函数应该是:

auto BitVector::Size() {
   auto size = bitVector.capacity();
   return size;
}

关于c++ - 指针 vector 的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43834800/

相关文章:

c++ - 使用虚拟基类时多重继承如何工作?

c++ - 当在类范围内定义方法时,除非在原始 cpp 文件中的其他地方调用该方法,否则项目不会编译

c++ - vector 迭代器转换

python - 用python中的索引 reshape 向量

c++ - 带有 vector 指针 vector 的段错误

c++ - c++中设置任意类型动态数组长度的泛型方法

c++ - 为什么不建议使用宏符号常量来定义固定长度的数组?

c++ - 在 C++ 中复制整数数组

C将指针作为函数中的参数传递

templates - 未知类型名称 ‘vector’