从 C++ 中的二维向量指针获取错误的大小

Ryu*_*yuk -1 c++ stdvector

我创建了一个二维向量,但是当我从这个二维向量指针读取大小时,它得到了错误的大小。我不知道,有人能解释一下吗?

#include <stdio.h>
#include <vector>

void read_size(std::vector<std::vector<float>> *vec)
{
    printf("read size %d, %d\n", vec->size(), vec[0].size());
}


int main()
{
    std::vector<std::vector<float>> vec;
    vec.resize(100);
    vec[0].resize(50);
    printf("main %d, %d\n", vec.size(), vec[0].size());
    read_size(&vec);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是

main 100, 50
read size 100, 100
Run Code Online (Sandbox Code Playgroud)

我认为两个尺寸都应该是 100、50

Mik*_*CAT 5

vec->size()相当于(*vec).size().

vec[0]相当于*(vec + 0), 相当于*vec

因此,vec->size()vec[0].size()是相同的东西。

vec您应该首先取消引用函数中的指针read_size以访问其元素。

(*vec)[0].size()这可以像、vec[0][0].size()、 或 那样完成vec->at(0).size()