我似乎无法管理访问向量元素的语法,向量的指针包含在结构中。MWE之后的更多内容:
#include <vector>
#include <stdio.h>
typedef struct vectag
{
std::vector<float> *X;
} vec;
int main ()
{
vec A;
A.X = new std::vector<float>(0);
A.X->push_back(5.0);
// This next line is the problem:
float C = A.X[0];
printf("%f\n", C);
return 1;
}
GCC (G++) 说
14:24: error: cannot convert ‘std::vector<float>’ to ‘float’ in initialization
当然,这是完全正确的。在行float C = A.X[0];
中,如果 X 不是指针,则 BX[0] 将是正确的(回想一下,std::vector<float> *X;
)。在 operator[] 之前取消引用 X 的正确语法是什么,以便我可以访问 X 的元素?
PS我知道成员函数at()
,它不是我的选择,因为我不想要范围检查的开销。这是性能关键代码的一部分。