Tim*_*tro -1 c++ stdvector dereference
我似乎无法管理访问向量元素的语法,其指针包含在结构中.更多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;
}
Run Code Online (Sandbox Code Playgroud)
GCC(G ++)说
14:24: error: cannot convert ‘std::vector<float>’ to ‘float’ in initialization
Run Code Online (Sandbox Code Playgroud)
当然,这是非常正确的.在该行中float C = A.X[0];,BX [0]将是正确的,如果X不是指针(召回std::vector<float> *X;).在operator []之前解除引用X的正确语法是什么,以便我可以访问X的元素?
PS我知道成员函数at(),它不是我的选项,因为我不想要范围检查的开销.这是性能关键代码的一部分.
A.X是指针.您需要取消引用它以访问它指向的向量:
float C = (*A.X)[0];
Run Code Online (Sandbox Code Playgroud)
但是如果你没有初始化A.X指向任何东西,解除引用它有未定义的行为,它看起来像你在这个程序中.
| 归档时间: |
|
| 查看次数: |
154 次 |
| 最近记录: |