English 中文(简体)
相关集装箱中的平等评价
原标题:Equality evaluation in associative containers (STL)
  • 时间:2011-11-21 19:44:20
  •  标签:
  • c++
  • stl

我知道,STL是一种关联的集装箱(以及正在分类的其他集装箱,我会猜测)利用分类标准检验平等。

集装箱的分类标准没有:无,从而对集装箱进行平等测试:

if (! (lhs < rhs || rhs < lhs))

或类似情况。 我就此提出了两个问题。

首先,对平等进行比较似乎过于低效——为什么STL这样做? 我本会期望STL集装箱只是为了平等而采用额外的违约参数。

我的第二个问题是,是否对以上一般性说明进行评价。 在C++中,该说明中有多少内容将得到评价(lhs > rhs)是真实的? 它是否在评估失败从而节省一些效率的一方之后停止尝试? 如果是,对哪一部分表述进行了初步评估?

最佳回答

在“有效的STL”中,斯科特·迈耶斯在上对此进行了广泛的讨论。 项目19:

www.un.org/Depts/DGACM/index_spanish.htm 理解平等与等同之间的差异。

Equality,如您所期望,以operator=为基础。

Equivalence “基于物体价值在一定范围内相对排序...... 两个物体在集装箱内具有以下价值:<条码>c。 如果在<代码>c中不预设另一条,则

迈耶斯表示:

!( w1 < w2 ) // it s not true that w1 < w2
&&           // and
!( w2 < w1 ) // it s not true that w2 < w1

接下来是:

This makes sense: two values are equivalent (with respect to some ordering criterion) if neither precedes the other (according to that criterion.)

关于《刑法》为何如此:

By using only a single comparison function and by employing equivalence as the arbiter of what it means to be "the same," the standard associative containers... avoid the kind of confusion that would arise from mixing uses of equality and equivalence within standard associative containers.

阅读项目19(涵盖6页更好的部分),以便穿透全射弹。

问题回答

STL 相关集装箱

You mean: standard C++ sorted associative containers.

我本来会期望STL集装箱只是为了平等而采用额外的违约参数。

达到什么目标? 在你们的课本中, red红树,而不是 tree树。

if (x < y)
    // ...
else if (y < x)
    // ...
else
    // equality

页: 1

if (x == y)
    // equality
else if (x < y)
    // ...
else
    // y < x

在最坏的案件中,仍然有两种比较。

针对对本答复的评论:只有低于操作者供应集装箱,这大大方便了集装箱的使用,因为没有必要保持低于和等同的一致性。 让我们想象一下,你们有一个储存浮点号码的方案。 一天,有人决定替换双向质量<代码>float_equis功能,即有些集装箱()也用其代码使用,作大致比较。 如果此人没有更新<代码>float_less功能,因为their Code don t use that function,那么您的集装箱代码便刻意破碎。

(Oh和如图所示,短路应用总是一样。)

关于第二个问题: 采用标准C lazy评价规则,对蓝.表示使用。 如果<代码>>、<>>>>/代码”属实,则不对该编码系统进行评价。

C++评价(如果)留待办案件。 评价左边(lhs < rhs)——如果正确,不作复合说明(在你看来不是这样的话),那么如果不检查右侧,它就会对整个评价。 (这名人确实回报了负值,因为没有这样做。) 如果是假的,它就会走到右边(rhs < lhs)并评估这一点,然后评估整个表述。

First of all, it seems like a strangely inefficient way to compare for equality

是的,但分类的集装箱相对很少进行这种测试。

比较功能如<代码>strcmp更好。 采用低于和比较的办法仍然更好。

在C++中,该说明中有多少内容将得到评价(lhs > rhs)是真实的?

在C和C++中,a && b,a><>><>>>>>>,>,a ? b : c/code>在左对上对,只有评价的有用部分(overloaded &&&>; <>,, <-code>>>>>,>>>>>,>-code>,,>,>>,C++>.

由此可以进行若干有用的短试,例如p!= NUL && *p > 2





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?