size_t 与机器相关,可否举例说明怎么相关。
两者可否相互赋值,如果可以,请说明原因,如果不可以,又为什么。
比如这样:
vector<int> vec(10);
vector<int>::size_type vec_size = vec.size();
我可否用vec_size这样说明数组大小
int *pia = new int[vec_size];
之所以这么问是因为书上有这么段话,
vector使用vector::size_type作为下标的类型,而数组下标的正确类型则是:size_t
9 个解决方案
#1
本质上都是unsigned整型值(比如int, long,long long)。正如你问题中所列出的那样,size_type与机器无关,而size_t与机器有关。
比如在16bit的机器上,size_t就是一个16位的无符号整数,而size_type就可能是一个32bit的无符号整数。
比如在16bit的机器上,size_t就是一个16位的无符号整数,而size_type就可能是一个32bit的无符号整数。
#2
使用size_type总是正确的。
#3
无论在什么机器上,使用什么编译器,只要用STL里面的size_type,就OK
#4
size_t是表示指针的,与多少位操作系统有关,假如操作系统是32位,size_t就是无符号32位的,假如操作系统是64位的,size_t就是无符号64位的。
size_type表示容器长度,与操作系统有关,不用的操作系统可以一样,可以不一样,仅用于表示容器,被定义在STL中。
size_type表示容器长度,与操作系统有关,不用的操作系统可以一样,可以不一样,仅用于表示容器,被定义在STL中。
#5
至于你上面的例子,假如引入容器的头文件和命名空间的话,应该不会报错。
因为编译器会把size_type隐式转化为size_t
因为编译器会把size_type隐式转化为size_t
#6
如果使用STL,则使用size_type,否则使用size_t。
#7
貌似你的理解有问题,size_type怎么可能跟机器环境无关呢? size_type和size_t都是机器有关的,win32:4 win64:8 ;换言之,win32:unsigned int win64:unsiged long
#8
1,size_type:由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
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 使用的时候头文件需要 <tchar.h> ;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;
7,记得看下wiki和百度百科
。。。。。
个人整理的,但愿能帮到你
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 使用的时候头文件需要 <tchar.h> ;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;
7,记得看下wiki和百度百科
。。。。。
个人整理的,但愿能帮到你
#9
4,size_t 使用的时候头文件需要 <cstddef>【<tchar.h>(_T())】 ;size_type 使用的时候需要<string>或者<vector>更正下
#1
本质上都是unsigned整型值(比如int, long,long long)。正如你问题中所列出的那样,size_type与机器无关,而size_t与机器有关。
比如在16bit的机器上,size_t就是一个16位的无符号整数,而size_type就可能是一个32bit的无符号整数。
比如在16bit的机器上,size_t就是一个16位的无符号整数,而size_type就可能是一个32bit的无符号整数。
#2
使用size_type总是正确的。
#3
无论在什么机器上,使用什么编译器,只要用STL里面的size_type,就OK
#4
size_t是表示指针的,与多少位操作系统有关,假如操作系统是32位,size_t就是无符号32位的,假如操作系统是64位的,size_t就是无符号64位的。
size_type表示容器长度,与操作系统有关,不用的操作系统可以一样,可以不一样,仅用于表示容器,被定义在STL中。
size_type表示容器长度,与操作系统有关,不用的操作系统可以一样,可以不一样,仅用于表示容器,被定义在STL中。
#5
至于你上面的例子,假如引入容器的头文件和命名空间的话,应该不会报错。
因为编译器会把size_type隐式转化为size_t
因为编译器会把size_type隐式转化为size_t
#6
如果使用STL,则使用size_type,否则使用size_t。
#7
貌似你的理解有问题,size_type怎么可能跟机器环境无关呢? size_type和size_t都是机器有关的,win32:4 win64:8 ;换言之,win32:unsigned int win64:unsiged long
#8
1,size_type:由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型将size_type定义为unsigned类型
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 使用的时候头文件需要 <tchar.h> ;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;
7,记得看下wiki和百度百科
。。。。。
个人整理的,但愿能帮到你
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 使用的时候头文件需要 <tchar.h> ;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;
7,记得看下wiki和百度百科
。。。。。
个人整理的,但愿能帮到你
#9
4,size_t 使用的时候头文件需要 <cstddef>【<tchar.h>(_T())】 ;size_type 使用的时候需要<string>或者<vector>更正下