tag:blogger.com,1999:blog-3940972473404160061.post7094488206800686884..comments2023-02-12T04:29:48.804-08:00Comments on Programming DIY / Программирование — это просто!: Хорошо ли использовать std::string?Александрhttp://www.blogger.com/profile/03980297457924475954noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-3940972473404160061.post-29387784225249158202010-12-08T19:51:56.630-08:002010-12-08T19:51:56.630-08:00Плюсадин!Плюсадин!ahttps://www.blogger.com/profile/03624482685942777011noreply@blogger.comtag:blogger.com,1999:blog-3940972473404160061.post-79945530629452719312009-09-10T13:28:51.161-07:002009-09-10T13:28:51.161-07:00Вопрос только в том, зачем это делать, если stl::s...Вопрос только в том, зачем это делать, если stl::string уже есть. Лично для себя решил что не надо бояться пользоваться стандартными контейнерами, нужно только знать границы их возможностей.strelokhttps://www.blogger.com/profile/16094534661744141608noreply@blogger.comtag:blogger.com,1999:blog-3940972473404160061.post-50734725555533068772009-08-17T05:42:19.036-07:002009-08-17T05:42:19.036-07:00Чтобы быть на равных с std::string можно добавить ...Чтобы быть на равных с std::string можно добавить функцию swap(String, String), которая будет менять указатели аналогично std::string::swap.Unknownhttps://www.blogger.com/profile/18279723829505976523noreply@blogger.comtag:blogger.com,1999:blog-3940972473404160061.post-45181662984898446192009-08-04T08:52:41.157-07:002009-08-04T08:52:41.157-07:00Глянул в xstring от Visual Studio 2008:
...
void ...Глянул в xstring от Visual Studio 2008:<br /><br />...<br />void __CLR_OR_THIS_CALL swap(_Myt& _Right)<br /> { // exchange contents with _Right<br /> if (this == &_Right)<br /> ; // same object, do nothing<br /> else if (_Mybase::_Alval == _Right._Alval)<br /> { // same allocator, swap control information<br /> _Bxty _Tbx = _Bx;<br /> _Bx = _Right._Bx, _Right._Bx = _Tbx;<br /> size_type _Tlen = _Mysize;<br /> _Mysize = _Right._Mysize, _Right._Mysize = _Tlen;<br /> size_type _Tres = _Myres;<br /> _Myres = _Right._Myres, _Right._Myres = _Tres;<br /> }<br /> else<br /> { // different allocator, do multiple assigns<br /> _Myt _Tmp = *this;<br /> *this = _Right;<br /> _Right = _Tmp;<br /> }<br /> }<br />...<br /><br />Выглядит так, что тут они тут тоже только указатели переставляют.Александрhttps://www.blogger.com/profile/03980297457924475954noreply@blogger.comtag:blogger.com,1999:blog-3940972473404160061.post-57501807209016284722009-08-04T08:30:19.053-07:002009-08-04T08:30:19.053-07:00Хорошо было бы протестировать std::string других р...Хорошо было бы протестировать std::string других реализаций. Некоторые реализации (как утверждает Майерс) используют отдельный буфер, что при вызове swap приводит лишь к копированию указателей.Unknownhttps://www.blogger.com/profile/18279723829505976523noreply@blogger.com