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 求Houdini使用行家,付费。价格面议。
  • ¥15 AttributeError: 'EasyDict' object has no attribute 'BACKUP_DB_INFO'
  • ¥15 前端高拍仪调用问题报错
  • ¥15 想用octave解决这个数学问题
  • ¥15 Centos新建的临时ip无法上网,如何解决?
  • ¥15 海康威视如何实现客户端软件对设备语音请求的处理。
  • ¥15 支付宝h5参数如何实现跳转
  • ¥15 MATLAB代码补全插值
  • ¥15 Typegoose 中如何使用 arrayFilters 筛选并更新深度嵌套的子文档数组信息
  • ¥15 CF1927D 求Hack