来自指针的矢量大小
Size of Vector from pointer
本文关键字:指针 更新时间:2023-10-16
我正在编写一个类BitVector,其中我有一个返回BitVector容量的方法。 我的想法是调用 std::vector capacity((,但我得到一个我有点困惑的错误。 以下是我的方法:
int BitVector::Size() {
int size = (int) this->bitVector().capacity();
}
我遇到的错误是"表达式处理明显调用的括号必须具有(指针到-(函数类型。 这里有什么问题?
有关我的课程的其他背景信息:
我的 BitVector 类具有通常的公共构造函数、解构函数等,然后是指向矢量的私有指针,如下所示:
private:
std::vector<uint8_t>* bitVector;
在我的构造函数中,我将指针指向堆上的向量,如下所示:
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()
用来保存其值的内容,就可以使您的生活变得简单。所以你的函数应该是:
auto BitVector::Size() {
auto size = bitVector.capacity();
return size;
}
bitVector
只是一个成员,而不是一个函数。 这也是一个指针。
int size = (int)this->bitVector->capacity();
另外,请注意,std::vector<bool>
已经专门化为位向量(每个布尔值使用 1 位(,因此您正在重新发明轮子。
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- 将OpenCV C++重写为EmguCV C#-如何使用指针
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错