c++ - Ordered associative containers of pointers -


this question has answer here:

is okay practice define ordered associative containers of pointers (either built-in or class-type ones) despite fact that, far can tell standard, relational operators on (non-array objects et al.) pointers undefined?

from 5.9 of c++11 standard:

  1. if 2 pointers p , q of same type point different objects not members of same object or elements of same array or different functions, or if 1 of them null, results of p<q, p>q, p<=q, , p>=q unspecified.

since ordered containers (map, set, multimap , multiset) use < operator default provide total order compiles fine create set of pointers. again if relational operators pointers unspecified p<q , p>q both test false or true meaning may not idea ordering of set. would've accepted bad idea if wasn't fact example in book (c++ primer 5th ed chapter 13.4) defines set of pointers class type folder*, i.e. set<folder*> seemingly no comment on concern.

the ordered associative containers not use operator< directly, use std::less, defined , establishes total ordering pointer types, when operator< isn't.

so, fine instantiate std::set or std::map pointer types keys.


Comments

Popular posts from this blog

c# - Binding a comma separated list to a List<int> in asp.net web api -

Delphi 7 and decode UTF-8 base64 -

html - Is there any way to exclude a single element from the style? (Bootstrap) -