`
lemoncyb
  • 浏览: 51123 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【转】size_t疑问

c++ 
阅读更多
在UNIX中,有很多的地方使用size_t代替int,请问他们有什么区别?
另外,size_t在那个头文件中声明的?应该是使用typedef吧?
看到一句话“size_t is the unsigned integer type returned by the sizeof operator",大家帮忙理解一下,为什么和sizeof有关

使用size_t是因为这个类型是与平台无关。为什么无关,就是因为他是sizeof的返回直。当你移植你的代码的时候,那不因为平台的不同而不同。大概是在stddef.h里的
2 楼size_t(阿跑) 回复于 2002-07-03 17:06:07 得分 5

size_t 在 stddef.h里定义。

在不同的实现里可能不一定相同,
In Borland implementation of the ANSI C standard, the type size_t is unsigned.
也就是typedef unsigned int size_t;

size_t is the unsigned integer type returned by the sizeof operator
的意思应该是说sizeof(size_t) == sizeof(unsigned int)
3 楼xkak2(矗立云端) 回复于 2002-07-03 17:42:00 得分 15

c中的int long等等的长度是随平台的而变化的,为了保证移植性,所以用一个中间类型size_t代表所有长度的类型,sizeof运算符返回的就是这个类型的数 据。在移植时,可以用typedef来指定该平台上size_t的真实数据类型。比如在win32和unix平台上,就是typedef unsinged int size_t。
4 楼sokoban() 回复于 2002-07-03 19:11:46 得分 0

typedef unsigned int size_t;


unsinged int,unsigned long,size_t还是std::size_t?
首先四种类型都是无符号类型,是用以表示元素个数或者数组索引的最佳类型。在作为函数参数时,不需像有符号类型那样检测值是否小于零。

1. ::size_t还是std::size_t
请使用std::size_t,因为你处于C++的世界。
在此,所有C++标准库组件用以表示元素个数的类型 (比如size()或者operator[])都是std::size_t。

std::size_t count = array.size(); // array是typedef vector<int>
std::size_t index = 0;
array[ index ] = 0;

注意:
1. 如果某个CPP没有使用任何C++标准库组件,那么就有可能需要包含<cstddef> 头文件。
2. std::size_t其实就是::size_t (::size_t被引入到namespace std中(你可以在<cstring>中找到)

基本上我们不会考虑unsigned int和unsigned long,因为处在C++的世界,使用C++标准库组件就是在所难免了。
如果你非要了解其细枝末节的话,那么下面是一份清单:

unsigned int 和 unsigned long比较(不考虑32位以下的平台)

如果不考虑可移植性:
在32位平台上更应该使用unsigned int,因为它:
1. 和unsigned long 一样的大小,32位可以表示到42.9亿。
2. 比unsigned long更常用
3. 和std::size_t是一样的类型

如果是64位平台的话:
1. unsinged int仍是32位,而unsigned long就是64位了。
2. 更应该使用unsigned long因为处理器对64位具有更快的处理速度。

就目前而言,64位平台还不够成熟,所以向64位平台的移植基本不做考虑。

但是如果你坚持要考虑可移植性(注意是硬件32位平台向64位移植,而非软件):
1. 如果对速度敏感:使用unsigned long,无论在32位还是64位都有最快的处理速度。
2. 如果对内存敏感:使用unsigned int,使用内存量不会因平台而改变。
不过通常对于硬件平台的可移植性的考虑都是多余的(不够敏捷哦)。

总结:
请在任何情况下使用std::size_[size=medium][/size]
分享到:
评论

相关推荐

    小学英语重点疑问句归纳.doc

    - What size is it? 询问尺寸。 四、一般疑问句的使用场景 - 询问能力:Can you play football? 你会踢足球吗? - 询问状态:Are you happy? 你开心吗? - 询问计划:Are you going to the park tomorrow? 明天...

    七年级英语上册(Unit 1 4)习题(无答案) 鲁教版五四制 试题.doc

    9. 对具体形容词提问:第6题对“small size”提问,使用疑问词“What size...?”。 10. 使用介词短语表示时间:第7题中的“last Sunday afternoon”可替换为“on Sunday afternoon”。 11. 一般疑问句的构成:第9...

    新目标英语七年级下册全部练习题及答案10精选.doc

    "应为"What size hamburger would you like?" 2. "它在邮局的对面。"应为"It's opposite the post office." 3. "他长得怎么样?"应为"What does he look like?" 4. "你的周末过得怎么样?"应为"How was your weekend...

    七年级下全册首字母句子填词练习精选.doc

    10. 食物与餐饮:`s______ pizza` 可能是 "size",询问披萨的尺寸;`v______` 可能是 "vegetables",蔬菜配料;`i______ tea` 可能是 "iced",冰茶。 11. 量词与动词:`w______ like` 可能是 "would like",想要的...

    河北省石家庄市藁城区2017_2018学年七年级英语下学期综合测试试题三无答案20180629370

    祈使句的否定形式是"Don’t"开头,所以选项C "Don’t" 是正确答案。 【知识点四:选择疑问句】 第四题是一个选择疑问句,"Would you like milk_____ juice?" 在两个选择之间使用"or"表示选择关系,所以选项A "or" ...

    高二英语下学期期末补考试题.doc

    _______ and unconnected with the Mediterranean 100 years ago."中,"two-thirds"后跟"of"加名词,表示“三分之二的……”,所以选项B "two-thirds of its present size"是正确的,表示黑海的三分之二现在的大小。...

    pep四年级下册Unit 6课时练习题及答案11.doc

    的否定回答是:No, they aren’t. (不,它们不是。) 2. Can I try them on? 的肯定回答是:Of course. Here you are. (当然可以。给你。) 3. This sweater is sixteen yuan. 对价格提问应为:How much is this ...

    卡耐基梅陇大学SSD5练习6答案

    for (size_t i = 0; i &lt; vec.size(); ++i) { vec_to_map[i] = vec[i]; } ``` 在这个过程中,我们需要注意效率问题。`vector`到`set`的转换由于涉及到红黑树的插入操作,时间复杂度大约是O(n log n),而`vector`到`...

    新目标七年级综合练习题(共23套练习含参考答案)16精选.doc

    12. (B) "I don’t like hot dogs ________ hamburgers." 在否定句中,"or"用于连接并列成分,表示“或”,所以选B。 13. (B) "_________ a bottle of milk, some hot dogs, and hamburgers on the table." 这是...

    C语言知识点总结

    值得注意的是,`sizeof`不是函数,其结果类型为`size_t`,定义在头文件`&lt;stddef.h&gt;`中。在不同的平台上,同一种数据类型的`sizeof`可能会有所不同。 ### 数组类型 数组是一组相同类型数据的集合,可以容纳多个数据...

    八年级英语下学期第二次月考试题(无答案) 人教新目标版2.doc

    " "What size"询问尺码大小,搭配不定式"to wear"构成疑问句。 7. 过去进行时:"Tom said he ____ at that time." "was cooking"表示过去某一时刻正在进行的动作,是过去进行时态。 8. 宾语从句语序:"I don’t ...

    apr库交叉环境搭建,编译,stomp 协议解析

    size_t iov_len; }; #endif ``` 完成以上步骤后,执行`make`和`make install`命令。 #### Windows平台下的APR库搭建 **1.1.1 在Windows环境下安装和使用APR库** 在Windows环境下搭建APR库的步骤如下: 1. **...

    优化有问题代码完整工程

    &lt;br&gt;疑问代码如下: struct _USB_DATA_STRUCT { /* unsigned char command_data[40];//release结果正确 int command_index; int command_size; int numofnod; */ int command...

    九年级英语上册典型错题及解析精选.doc

    这些题目主要涵盖的是初中英语语法、词汇和句型的运用,包括动词时态、主谓一致、比较级、疑问句、反意疑问句、代词的使用、介词搭配以及固定短语等知识点。下面对每个题目进行详细解析: 1. ( ) 1. More than a ...

    安徽省七年级英语期末测试卷及答案.doc

    这些题目涵盖的英语知识点包括时态(一般现在时、现在进行时、一般过去时)、情态动词(have to, mustn't)、疑问句的构造、形容词的使用、固定搭配以及日常对话表达等。通过这样的测试,学生可以检验自己在语法、...

    辽宁省大洼县2020学年七年级英语下学期期中试题(无答案) 人教新目标版.doc

    3. 疑问句的结构:题目(3)询问周末过得怎么样,使用"How"开头的基本疑问句,正确答案是B.How。 4. It's time for sb. to do sth.:此句型表示“是某人做某事的时候了”,如题目(4)It’s time for us _____home...

    mysql8.0.11多实例安装

    1. **错误提示“Can't find error-message file”**:这通常是因为MySQL无法找到错误消息文件。确保配置文件中的`basedir`设置正确,并且文件路径存在。 2. **端口冲突**:如果遇到端口被占用的情况,检查系统是否有...

    小学英语人教版PEP六年级下册期中检测卷(二).doc

    ",要求学生能够正确地用Yes, I did 或 No, I didn't 回答。 7. **助动词Does的使用**:例如"Does she live in Beijing?",考察学生对第三人称单数形式的助动词用法。 8. **现在进行时**:如"I'm watching TV.",...

    二进制文件的合并

    size_t bytesRead = sourceFile.gcount(); // 获取实际读取的字节数 destFile.write(buffer, bytesRead); // 将读取的数据写入目标文件 } ``` 4. 处理剩余数据:如果源文件最后没有完全填满缓冲区,我们需要检查`...

    黑龙江省青冈县2020届九年级英语下学期第一次月考试题(无答案) 人教新目标版.doc

    3. "Don’t iron them ____ high heat." 这里考查的是介词与动词短语的搭配,"at high heat" 表示在高温下。 4. "The pens are made _____ plastic and metal." 这题考察被动语态,"be made of" 表示由...制成,可以...

Global site tag (gtag.js) - Google Analytics