当前位置:  开发笔记 > 编程语言 > 正文

我可以指望任何STL容器的sizeof(string)或sizeof吗?

如何解决《我可以指望任何STL容器的sizeof(string)或sizeof吗?》经验,为你挑选了1个好方法。

我有

string email_list[] = {"aaa@sds.com", "bbb@sdsds.com"};

for (int i = 0; i < sizeof(email_list)/sizeof(email_list[0]); i ++) {
   ...
}

我看到一个有趣的事情:在sizeof(email_list[0])VS2012的调试模式下返回28; 但它在发布模式下提供24.但sizeof(email_list)/sizeof(email_list[0])总能给出正确的价值 - 2.所以不确定这是否是循环通过这样一个数组的正确和可靠的方法?

怎么样在其他STL容器,例如vector,map...?



1> Bathsheba..:

sizeof(arr)/ sizeof(arr [0])将始终为任何类型恢复固定大小数组arr中的元素数.

不过要小心; 如果arr已经腐烂成指针,它就不起作用.

始终定义arr [0],因为零长度数组在C++中是不合法的.

至于调试和释放之间字符串的大小是不同的:这是允许的,因为标准没有规定该对象的大小.您可能会发现调试版本有一个类型指针来帮助调试.

推荐阅读
jerry613
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有