指定向量的指针

时间:2016-07-08 14:55:05

标签: c++ pointers vector

我确定这个问题存在于这个网站的某个地方,但我想我不太确定要搜索什么,因为我还没找到答案。所以,如果我发布一份副本,我就会解散。

无论如何,我正在尝试创建一个指向矢量的指针向量。

这是我到目前为止所做的:

    float knot_vector1[] = {-1,-1,-1 0,1,1,1};
    float knot_vector2[] = {-1, -1, 1, 1};
    float knot_vector3[] = {-1, -1, -1, -1, 0, .5, .5, .5, 1, 1, 1, 1};


    // initialize vectors with the arrays defined above

    vector<float> U1 (knot_vector1, knot_vector1 + sizeof(knot_vector1) / sizeof(knot_vector1[0]) );
    vector<float> U2 (knot_vector2, knot_vector2 + sizeof(knot_vector2) / sizeof(knot_vector2[0]) );
    vector<float> U3 (knot_vector3, knot_vector3 + sizeof(knot_vector3) / sizeof(knot_vector3[0]) );

    vector<float> *ptr_u1 = &U1;  // creating pointers that point to my vectors
    vector<float> *ptr_u2 = &U2;
    vector<float> *ptr_u3 = &U3;

    vector<vector<float>*> knotvectors[] = {ptr_u1, ptr_u2, ptr_u3};

以下是我收到的错误:

error: conversion from 'std::vector<float>*' to non-scalar type 'std::vector<std::vector<float>*>' requested|

显然,在我定义指针向量的最后一行出了问题。这样做的正确方法是什么?

提前谢谢。

2 个答案:

答案 0 :(得分:3)

看来你的意思是以下

vector<vector<float>*> knotvectors = {ptr_u1, ptr_u2, ptr_u3};

也许最好只写

vector<vector<float>> knotvectors = { U1, U2, U3};

答案 1 :(得分:3)

vector<vector<float>*> knotvectors[] = {ptr_u1, ptr_u2, ptr_u3};

vector<vector<float>*>数组

你想要

vector<vector<float>*> knotvectors = {ptr_u1, ptr_u2, ptr_u3};