草庐IT

DATA_SIZE

全部标签

c++ - typedef 用于可以包含 size_t 的有符号类型?

对于可以包含所有size_t值的带符号类型,是否有标准(或MSVC专有)typedef?IE。在64位系统上,它将是一个128位有符号整数。 最佳答案 通常不可能定义这样的类型。实现size_t是完全合法的。支持的最大无符号类型,这将(几乎可以肯定)意味着没有有符号类型可以保存其所有值。ptrdiff_t不一定足够宽。这是两个指针相减的结果,但没有什么说指针减法不会溢出。请参阅C++标准的第5.7节:Whentwopointerstoelementsofthesamearrayobjectaresubtracted,theresul

c++ - typedef 用于可以包含 size_t 的有符号类型?

对于可以包含所有size_t值的带符号类型,是否有标准(或MSVC专有)typedef?IE。在64位系统上,它将是一个128位有符号整数。 最佳答案 通常不可能定义这样的类型。实现size_t是完全合法的。支持的最大无符号类型,这将(几乎可以肯定)意味着没有有符号类型可以保存其所有值。ptrdiff_t不一定足够宽。这是两个指针相减的结果,但没有什么说指针减法不会溢出。请参阅C++标准的第5.7节:Whentwopointerstoelementsofthesamearrayobjectaresubtracted,theresul

c++ - 可以使用placement-new 和vector::data() 替换 vector 中的元素吗?

关于替换不可赋值的vector元素存在两个问题:C++UseUnassignableObjectsinVectorHowtopush_backwithoutoperator=()forconstmembers?一个对象不可赋值的一个典型原因是它的类定义包含const成员,因此它的operator=被删除了。std::vector要求其元素类型是可分配的。事实上,至少使用GCC,既不是直接赋值(vec[i]=x;),也不是erase()和insert()当对象不可分配时替换元素有效。可以像下面这样使用vector::data()、直接元素销毁和使用复制构造函数放置new的函数来替换元素而

c++ - 可以使用placement-new 和vector::data() 替换 vector 中的元素吗?

关于替换不可赋值的vector元素存在两个问题:C++UseUnassignableObjectsinVectorHowtopush_backwithoutoperator=()forconstmembers?一个对象不可赋值的一个典型原因是它的类定义包含const成员,因此它的operator=被删除了。std::vector要求其元素类型是可分配的。事实上,至少使用GCC,既不是直接赋值(vec[i]=x;),也不是erase()和insert()当对象不可分配时替换元素有效。可以像下面这样使用vector::data()、直接元素销毁和使用复制构造函数放置new的函数来替换元素而

c++ - 为什么 std::list.size() 不是恒定时间?

这个问题在这里已经有了答案:Islist::size()reallyO(n)?(8个回答)关闭4年前。这段代码运行了0.012秒:std::listlist;list.resize(100);intsize;for(inti=0;i这个9.378秒:std::listlist;list.resize(100000);intsize;for(inti=0;i在我看来,有可能以这种方式实现std::list,该大小将存储在私有(private)变量中,但根据此,每次调用size时都会再次计算它。谁能解释一下为什么? 最佳答案 常数时间s

c++ - 为什么 std::list.size() 不是恒定时间?

这个问题在这里已经有了答案:Islist::size()reallyO(n)?(8个回答)关闭4年前。这段代码运行了0.012秒:std::listlist;list.resize(100);intsize;for(inti=0;i这个9.378秒:std::listlist;list.resize(100000);intsize;for(inti=0;i在我看来,有可能以这种方式实现std::list,该大小将存储在私有(private)变量中,但根据此,每次调用size时都会再次计算它。谁能解释一下为什么? 最佳答案 常数时间s

android文件系统管理全解析——内部存储和外部存储 /data/data和/sdcard/Android/data区别

文件系统是android一个重要的部分。我们需要保存app的一些数据。或者我们需要用到系统的一些数据,如相册等。那么就需要对文件系统有一定的了解。android文件系统有一个非常让人困惑的地方,就是获取的文件名和路径可能是不确定的。例如下面的代码,这个代码是非常常用的。但这个代码在不同的android版本可能出现的结果不同。Environment.getExternalStorageDirectory()可能出现下面的结果。/storage/emulated/0/mnt/sdcard/storage/sdcardstorage和sdcard的区别这里有一个非常困惑的问题,就是storage和s

c++ - std::vector<char> 的 max_size() 是否有错误?

我对std::vector::max_size()的结果感到困惑在我测试过的n=32和n=64位系统上。结果是2n-1。让我解释一下为什么我感到困惑。std::vector的每个实现我知道有三个T*类型的成员:begin_,end_,capacity_.begin_指向vector的第一个值和end_指向最后一个。因此,vector的大小由end_-begin_给出.但是这种差异的结果是类型std::ptrdiff_t这是我所知道的每个实现中的n位的有符号整数。因此,该类型不能存储2n−1,而最多只能存储2n−1−1.如果您查看您的std::vector实现时,您会清楚地看到大小会产生

c++ - std::vector<char> 的 max_size() 是否有错误?

我对std::vector::max_size()的结果感到困惑在我测试过的n=32和n=64位系统上。结果是2n-1。让我解释一下为什么我感到困惑。std::vector的每个实现我知道有三个T*类型的成员:begin_,end_,capacity_.begin_指向vector的第一个值和end_指向最后一个。因此,vector的大小由end_-begin_给出.但是这种差异的结果是类型std::ptrdiff_t这是我所知道的每个实现中的n位的有符号整数。因此,该类型不能存储2n−1,而最多只能存储2n−1−1.如果您查看您的std::vector实现时,您会清楚地看到大小会产生

c++ - std::string::length() 与 std::string::size()

这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:std::stringlength()andsize()memberfunctions我总是通过size()成员函数检索std::string的长度。老实说,我从来不知道还有一个length()成员函数。嗯,我刚刚知道有。所以我想知道这两者之间是否有任何区别,并且在可能的否定答案的情况下,为什么会有两个成员函数完全相同? 最佳答案 不!没有不同。此函数更自然的名称是length(),同时提供size()以与容器保持一致。