Здравствуйте, igna, Вы писали:
I>В VC9 тем не менее сначала конструируется map::value_type, затем при вставлении копируется в node, после чего сконструированное значение уничтожается. То есть избавились от make_pair, но избыточное копирование оставили.
Ну, если учесть, что избыточные копирования убираются оптимизатором компилятора...
Здравствуйте, ArtDenis, Вы писали:
AD>Ну, если учесть, что избыточные копирования убираются оптимизатором компилятора...
Действительно, компилятору разрешено убирать избыточные копирования в некоторых случаях, но рассматриваемый случай к ним не относится.
Здравствуйте, Caracrist, Вы писали:
C>А мы теперь с этим кривым и стандартным работаем...
Ну так а где в C++ или в стандартной библиотеке некриво?
Здравствуйте, Caracrist, Вы писали:
C>Короче, кто-то поленился реализовать:
C>C> iterator insert(const typename value_type::first_type &_First, const typename value_type::second_type& _Second);
C>// и трансформеры...
C> template<typename T, int N>
C> iterator insert(const T(&_First)[N], const typename value_type::second_type& _Second)
C> {
C> return insert((const typename value_type::first_type)(_First),_Second);
C> }
C> template<typename T, int N>
C> iterator insert(const typename value_type::first_type &_First,const T(&_Second)[N])
C> {
C> return insert(_First,(const typename value_type::second_type )(_Second));
C> }
C> template<typename T1, typename T2, int N1, int N2>
C> iterator insert(const T1(&_First)[N1],const T2(&_Second)[N2])
C> {
C> return insert((const typename value_type::first_type )(_First),(const typename value_type::second_type )(_Second));
C> }
C>
C>А мы теперь с этим кривым и стандартным работаем...
А как предлагешь поступить с завершающим '\0' в asciiz стрках?
Как быть с другими типами, где 0й элемент может иметь иной смысл?
.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth