草庐IT

BTN_SIZE

全部标签

c++ - string.empty() 或 string.size() == 0 哪个更快?

最近,在一次讨论中,一位程序员同事要求我做一些代码更改。我有类似的东西:if(mystring.size()==0)//dosomethingelse//dosomethingelse讨论是关于使用mystring.empty()来验证字符串是否为空。现在,我同意可以说string.empty()是更冗长和可读的代码,但它有什么性能优势吗?我做了一些挖掘,发现了与我的问题有关的以下2个答案:Implementationfrombasic_string.hSOAnswerthatpointstoISOStandard-here这两个答案都支持我的说法,即string.empty()与st

C++: "vector<int>::size_type variable"- 以这种方式声明有什么意义?

我认为这是一个非常基本的问题,但我无法弄清楚。我习惯于在C++中使用数组,但我现在开始学习vector。我正在编写测试代码,遇到了一个问题。首先,这是我制作的代码:#include#include#includeusingnamespacestd;intmain(){vectorscore(10);for(vector::size_typei=0;i>score[i];}doubletotal=accumulate(score.begin(),score.end(),0);cout在for第9行中的句子,我声明i作为vector::size_type类型(因为有人告诉我这样做)。我用i

C++: "vector<int>::size_type variable"- 以这种方式声明有什么意义?

我认为这是一个非常基本的问题,但我无法弄清楚。我习惯于在C++中使用数组,但我现在开始学习vector。我正在编写测试代码,遇到了一个问题。首先,这是我制作的代码:#include#include#includeusingnamespacestd;intmain(){vectorscore(10);for(vector::size_typei=0;i>score[i];}doubletotal=accumulate(score.begin(),score.end(),0);cout在for第9行中的句子,我声明i作为vector::size_type类型(因为有人告诉我这样做)。我用i

C++ for 循环 - size_type 与 size_t

在C++Primer书,第(3)章,有以下for循环将vector中的元素重置为零。for(vector::size_typeix=0;ix!=ivec.size();++ix)ivec[ix]=0;为什么使用vector::size_typeix=0?我们不能说intix=0?在第二个表单上使用第一个表单有什么好处?谢谢。 最佳答案 C++标准说,size_type|unsignedintegraltype|atypethatcanrepresentthesizeofthelargestobjectintheallocationm

C++ for 循环 - size_type 与 size_t

在C++Primer书,第(3)章,有以下for循环将vector中的元素重置为零。for(vector::size_typeix=0;ix!=ivec.size();++ix)ivec[ix]=0;为什么使用vector::size_typeix=0?我们不能说intix=0?在第二个表单上使用第一个表单有什么好处?谢谢。 最佳答案 C++标准说,size_type|unsignedintegraltype|atypethatcanrepresentthesizeofthelargestobjectintheallocationm

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++ - 为什么 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

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实现时,您会清楚地看到大小会产生