我创建了一个二维向量,但是当我从这个二维向量指针读取大小时,它得到了错误的大小。我不知道,有人能解释一下吗?
#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
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()。
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |