vector<int>::size_type ix=0 谁帮我解释下C++里这段代码!详细点的!尤其是size_type!

2025-03-04 12:16:04
推荐回答(2个)
回答1:

vector::size_type //::号前面是命名空间,后面是自定义的类型
你要用到这个类型时,必须加上命名空间,防止和其他命名空间中的定义重复。
vector::size_type ix=0 //这句的意思就是定义一个vector命名空间中类型为size_type的变量ix,并将其赋值为0。

回答2:

在stl中一些类中的函数的返回值是 size_type 但在不同的stl模版类中size_type代表的具体类型可能不一样 可能是unsigned型的 也可能不是
所以在使用到了这一类型 还是使用vector::size_type 这种模版类自己的类型,不需要关注,他的具体到底是什么
例如
std::vector a;
a.push_back(10);
a.push_back(20);
/*
** a.size() 的返回值类型就是 size_type
*/
for ( std::vector::size_type i = 0; i < a.size(); i++ )
{
printf("%d\n", a.at(i));
}

不过你也可以这样用

std::vector a;
a.push_back(10);
a.push_back(20);
/*
** a.size() 的返回值类型就是 size_type
*/
for ( int i = 0; i < a.size(); i++ )
{
printf("%d\n", a.at(i));
}
return 0;

编译器可能给出一个这样的警告
warning C4018: “<”: 有符号/无符号不匹配