LINUX.ORG.RU

map<string,string>


0

0

Необходимо при работе с subj создавать копии строк, а не использовать имеющиеся экземпляры, т.е. делать что то вроде map<string,string> m; m[new string(mystr)] = new string(myvalue); Только в данном случае будут типы string *, а мне нужны типы string. Помогите, пожалуйста.

anonymous

а, по твоему map<string,string> m; m[s1]=s2; они не будут копироваться? имхо будут, будут копироваться обложки, а содержимое по COW.

хотя несложно проверить... например взять адреса строчек и/или символов в них.

то-есть почему ты решил, что они не будут копироваться?

anonymous
()

а strdup уже не в моде или вы страшный фанат C++? :)

SadStork
()

ну напиши, класс обвёртку для std::string* и вперёд хотя в чём суть проблемы, я не очень понял

anonymous
()

ИМХО Вы не правильно используете контейнеры - почитайте Струструпа 3 -е издание. Оператор new не нужен, т.к. в стандартных контейнерах работают копирующие кострукторы, поэтому достаточно написать m[string("xcxxxc")] = string("asasasa"), хотя может и без string() прокатить, т.к. сам string инициализируется const char[]. Или же по другому - m[string( str1 )] = string( str2 ), где str1, str2 типа char*.

PETER ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.