c++ - EASTL vector-design on size() 方法

标签 c++ vector eastl

我对 EASTL 中 vector 的实现有疑问。 链接是here.

即,在方法 size() 上。这是它的样子:

template <typename T, typename Allocator>
inline typename vector<T, Allocator>::size_type
vector<T, Allocator>::size() const
{
    return (size_type)(mpEnd - mpBegin);  
}

size_typeuint32_tmpBegin/mpEnd是T*指针。

我不明白从 (mpEnd - mpBegin) 到 uint32_t 的转换如何等于 vector 中元素的数量。不应该除以sizeof(T)吗?否则我们只是获取 vector 中所有元素的大小(以字节为单位)?

我错过了什么?

编辑:除非,EASTL vector 不遵循 vector 的 STL 定义,但我找不到关于它的任何数据,并且据说可以用 eaSTL vector 替换 STL vector

最佳答案

导致操作等于数组中元素数的不是强制转换。指针减法在这里已经做了正确的事情。当您从一个指针中减去另一个指针时,会考虑它们指向的类型的大小。不需要除以 sizeof(T)。一直都是这样,即使在 C 中也是如此。强制转换只是将其转换为返回值的正确整数类型(如果尚未转换)。

关于c++ - EASTL vector-design on size() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10156480/

相关文章:

当我将 promise 分配给线程时,C++ 获取 "Debug Error R6010 -abort() has been called "

C++ : Pushing an object into a vector

vector - 将多个向量连接成一个新向量的最佳方法是什么?

c++ - EASTL 性能

c++ - 使用派生类创建基类对象

c++ - 内存栅栏 : acquire/load and release/store

c++ - UTF-8 到宽字符转换

c++ - C++ 中不同 vector 之间没有线程安全?

c++ - 如何使用 EASTL 跟踪内存使用情况?