有人能给我解释一下这句台词吗?
Could someone explain me this line?
好的,这里有一行c++
typedef vector<double>::size_type vec_sz;
我明白,这一行创建了一个名为vec_sz的别名。但我不明白为什么这里用矢量??什么通用有typedef和vector。整个晚上我都想弄明白,可我还是不明白。
vec_sz
现在是用于表示vector
大小的数据类型的别名(几乎总是size_t
)。因此,假设您想索引向量中的元素,您将使用vec_sz
如下:
for(vector<double>::size_type i = 0; i < some_vector.size(); ++i)
{
...
}
(多亏了typedef
)现在相当于:
for(vec_sz i = 0; i < some_vector.size(); ++i)
{
...
}
你可能会想,"为什么要用vec_sz
?我为什么不直接使用int
呢?"好吧,这使你的代码更易于移植,更不容易依赖于你的假设(这可能是错误的)。
当然,通过迭代器访问vector中的元素更好。
类中可以有typedef:
class foo {
public:
typedef int bar;
}
foo::bar my_int; // same as int my_int;
Vector有一个类型定义,对应于size_t
vector<double>::size_type my_int; // roughly the same as size_t my_int
// implementation may not use size_t
这是大量的输入所以你可以再次定义它使行更短:
typedef vector<double>::size_type vec_sz;
vec_sz my_int; // same as vector<double>::size_type my_int; which is the same as size_t my_int;
每个vector-class(在您的例子中是vector)定义了一些名为size_type的无符号整型。像这样:
template<class T> vector {
typedef size_t size_type;
...
}
std::vector类中用于存储大小的类型。在许多平台和操作系统上,这可能会有所不同,使用这种类型可以确保您正确读取其大小。
例如,可以使用int作为其大小类型。但是,如果vector的size类型为unsigned int,则当vector超过最大signed int大小时,可能会出现奇怪的结果。更多信息可在http://en.wikipedia.org/wiki/C_data_types上找到如您所见,int保证至少有16个字节,这在不同的操作系统中是不同的。
size_type
是std::vector<double>
的成员类型。
namespace std {
template <typename T> class vector {
public:
typedef __something size_type;
size_type size() const;
// ...
};
}
标准避免指定诸如"vector<T>::size()
的返回类型是unsigned int
"之类的内容,以防实现可以支持向量中多于unsigned int
的最大值所表示的元素。相反,它指定了一些实现定义的成员类型,因此库可以使用任何最有意义的类型,并且用户代码可以轻松地使用该类型。
同样,vector<double>::size_type
和vector<char>::size_type
也可以是不同的(尽管它们通常是相同的)。
所以引用的代码说"为c++库中用于vector中包含double的元素数的类型创建另一个typedef vec_sz
"。
- 有人能解释一下为什么下界是这样工作的吗C++的
- 我是c ++的新手,你能解释一下在这种情况下的指针吗
- 有人能为我解释一下C++代码吗
- 你能解释一下什么运行时错误是如何解决它的吗?
- 有人可以解释一下这段代码如何能够反转字符串
- 解释一下 for (char c : str) 的作用?
- 有人可以解释一下这个矩阵幂函数是如何工作的吗?
- 有人可以向我解释一下这段代码的作用吗?
- 任何人都可以解释一下我是否需要 & 在第一个代码片段中
- 我不完全确定此代码的行为.有人可以向我解释一下吗?
- 有人可以解释一下吗?这是关于数组和数组内部 if 语句的一些处理
- 我无法理解这一点,有人可以帮我解释一下吗?
- 有人可以解释一下复制功能的作用吗?
- 解释一下这个排序算法是如何工作的?
- 我在 2D 数组的动态内存分配中遇到了一些奇怪的代码C++? 请解释一下这是什么?
- 有人能给我解释一下下面的模板代码吗
- 有人能解释一下这些说法背后的逻辑是什么吗
- 在给定的代码中,有人可以解释一下(int i = 0; i<len; i++)count[str[i]]++的代码片段;
- 谁能解释一下这个BFS代码是如何工作的?
- 有人可以解释一下'sizeof'在此代码中返回的结果吗