【c++】size_t 和 size_type的区别

为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned

1. size_t是全局定义的类型;size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度

2. string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int
3. 使用的时候可以参考:
   string::size_type  a =123;
   vector<int>size_type b=234;
   size_t b=456;
4. size_t 使用的时候头文件需要 <cstddef> ;size_type 使用的时候需要<string>或者<vector>
5.  sizeof(string::size_type) 
     sizeof(vector<bool>::size_type) 
     sizeof(vector<char>::size_type)  
     sizeof(size_t) 
     上述长度均相等,长度为win32:4 win64:8
6. 二者联系:在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t

时间: 2024-10-21 07:48:25

【c++】size_t 和 size_type的区别的相关文章

size_t 和 size_type的区别

为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int, unsigned 1. size_t是全局定义的类型:size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 2. string::size_type 制类型一般就是unsigned int, 但是不同机器环境长度可能不同 win32 和win64上长度差别;size_type一般也是unsigned int3. 使用的时候可以参考:   string

size_t与size_type区别

size()  标准库string里面有个函数size,用来返回字符串中的字符个数,具体用法如下: string st("The expense of spirit\n");cout << "The size of "<<st<<"is"<<st.size()<< "characters, including the newline"<<endl; 那么s

size_t和size_type

size_t和size_type是为了独立于及其而定义的类型,因为比如在一台电脑上int为2b,而另一台电脑上是4b,这样就给程序的可移植性带来了麻烦.为了解决这个问题,在库内定义了如上类型,其实size_type应该是C++为例如string类和许多其他库类型定义的配套的类型,使这些库类型的使用与机器无关,一般定义为unsigned类型,例如unsigned int,unsigned long

size_t, ptrdiff_t, size_type, difference_type

size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_t ptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以负数,std::ptrdiff_t. size_type是unsigned类型,表示容器中元素长度或者下标,vector<int>::size_type i = 0; difference_type是signed类型,表示迭代器差距,vector<int>:: difference_type = it

size_t和size_type类型

size_t一般用来表示一种计数,比如有多少东西被拷贝等.例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小. 它的意义大致是“适于计量内存中可容纳的数据项目个数的无符号整数类型”.所以,它在数组下标和内存管理函数之类的地方广泛使用. size_t是全局定义的类型:size_type是STL类中定义的类型属性,用以保存任意string和vector类对象的长度 string::size_type 制类型一般就是unsigned int, 但是不同机器

size_t和ssie_t的区别

网上有一篇非常详细的寻找定义的过程,自己也做了做. 过程: 1.先在/usr/include/i386-linux-gun找到 #ifndef __ssize_t _defined     typedef __ssize_t ssize_t 2.文件中再没有相关线索,但是有#include <bits/types.h> , 查看.   找到  __STD_TYPE__SSIZE_T_TYPE __ssize_t 其中该文件有 #define  __STD_TYPE  __extension__

size_t和unsigned int区别

size_t和unsigned int有所不同,size_t的取值range是目标平台下最大可能的数组尺寸,一些平台下size_t的范围小于int的正数范围,又或者大于unsigned int.最典型的,在x64下,int还是4,但size_t是8.这意味着你在x64下最大可能开辟的数组尺寸是2^64.如果你使用int或者unsigned int,那么在x64下如果你的代码中全部使用uint作为数组的尺寸标记,那么你就会失去控制2^32尺寸以上的数组的机会.虽然现在在x64上开辟一个大于2^32

C语言 string::size_type类型

string::size_type类型 从逻辑上来讲,size()成员函数似乎应该返回整型数值,或如2.2节"建议"中所述的无符号整数.但事实上,size操作返回的是string::size_type类型的值.我们需要对这种类型做一些解释. string类类型和许多其他库类型都定义了一些伙伴类型(companion types).这些伙伴类型使得库类型的使用是机器无关的(machine-independent).size_type就是这些伙伴类型中的一种.它定义为与unsigned型(

C++ string::size_type 类型【转】

1 int main() 2 { 3 string str("Hello World!\n"); 4 cout << "The size of " << str << "is " << str.size() 5 << " characters, including the newline" << endl; 6 return 0; 7 } 从逻辑上来讲,s