gpt4 book ai didi

c++ - 我什么时候应该使用 vector::size_type 而不是 size_t?

转载 作者:可可西里 更新时间:2023-11-01 17:05:37 24 4
gpt4 key购买 nike

this question我看到以下内容:

for (vector<int>::size_type ix = 0; ix ! = ivec.size(); ++ix) {
ivec[ix] = 0;
}

我明白为什么 int这里没有使用,但为什么不直接使用 size_t

什么情况下应该用vector<int>::size_type而不是 size_t

最佳答案

初级使用时间size_type在模板中。虽然std::vector<T>::size_type通常是 size_t , some_other_container<T>::size_type可能是其他类型1。允许用户添加到 std 的少数内容之一命名空间是某些用户定义类型的现有模板的特化。因此,std::vector<T>::size_type对于一些古怪的人 T 可能实际上是 size_t 以外的某种类型, 即使标准库中定义的基本模板可能总是使用 size_t .

因此,如果您想在适用于该容器的模板中为特定容器使用正确的类型,您需要使用 container::size_type而不是仅仅假设 size_t .

但是请注意,通用代码很少会直接与容器一起工作。相反,它通常应该与迭代器一起工作,所以而不是 container<T>::size_type , 它通常会使用类似 std::iterator_traits<WhateverIterator>::difference_type 的东西相反。


  1. 对于一些特定的 T , vector<T>::size_type也可能是不同的类型——你被允许放入 std 的为数不多的东西之一。命名空间是用户定义类型的现有类的特化,因此对于某些 T , vector<T>可以使用与大多数其他类型完全不同的容器。这是典型的 vector<bool> ,但也可能适用于其他类型。

关于c++ - 我什么时候应该使用 vector<int>::size_type 而不是 size_t?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17258067/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com