在C ++中,size_t
(或更正确地说T::size_type
,通常是“ 类型” size_t
;即unsigned
类型)被用作的返回值size()
,的自变量operator[]
等(请参见std::vector
等)。
另一方面,.NET语言出于相同目的使用int
(并且(可选long
))。实际上,不需要 CLS兼容语言来支持unsigned类型。
由于.NET是比C ++新的东西告诉我,可能会有问题,使用unsigned int
连供的事情,“不可能”像数组索引或长度为负。C ++的方法是否“向后兼容”?还是这两种方法之间存在真实而重大的设计折衷?
为什么这么重要?好吧……对于C ++中的新多维类,我应该使用什么?size_t
还是int
?
struct Foo final // e.g., image, matrix, etc.
{
typedef int32_t /* or int64_t*/ dimension_type; // *OR* always "size_t" ?
typedef size_t size_type; // c.f., std::vector<>
dimension_type bar_; // maybe rows, or x
dimension_type baz_; // e.g., columns, or y
size_type size() const { ... } // STL-like interface
};
-1
都是从返回索引的函数返回的,以指示“未找到”或“超出范围”。它也从Compare()
函数(实现IComparable
)中返回。32位int被认为是通用数字的输入类型,我希望这是显而易见的原因。