acodignaks 2020-10-19 09:45 采纳率: 25%
浏览 63
已采纳

C++ vector 的一些疑问

环境: Win10 + vs2015 x64 Release

对于下面的代码:

vector<char> vec = {'a' , 'b'};

cout << sizeof(vec) << endl;        

cout << sizeof(vec[0]) << endl;     
cout << sizeof(vec[1]) << endl;     

cout << &vec << endl;
cout << (void *)&vec[0] << endl;    
cout << (void *)&vec[1] << endl;

输出的内容为:

24
1
1
00000069592FFAA0
0000025041321DA0
0000025041321DA1

问题1:为什么这个容器的size是24呢?

问题2:地址&vec和&vec[0]为什么不相同?

感谢关注与解答!

  • 写回答

2条回答 默认 最新

  • qtchen_1988 2020-10-20 17:58
    关注
    1. cout << sizeof(vec) << endl;    --> cout << vec.size() << endl;
    2.&vec 实际上就是取到了vec  vector对象的地址。并不是vector的首地址。 
        cout << (void *)vec.data() << endl;
        cout << (void *)&vec[0] << endl;
        cout << (void *)&vec[1] << endl;
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 7月26日

悬赏问题

  • ¥15 划分vlan后不通了
  • ¥15 GDI处理通道视频时总是带有白色锯齿
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数