string

4 отговора 312 прегледа
#1

string

Vypros za stl - ako napravia edin goliam string, kak sled tova moga da osvobodia pametta zaemana ot nego - nito s.clear(), nito s = "", nito s.resize; vyrshat rabota. Tova e ne samo pri string ami i pri vector primerno.

Отговор
в отговор на stl #2

Re: string

void clear_string(string &str_data)
{
string empty ;
swap(str_data, empty) ;
}

Отговор
в отговор на darklord #3

Re: string

10x, vsyshtnost za string si raboteshe i s = "", no za vector ne se seshtam za drug nachin da se napravi osven kakto ti si go kazal - toia neshte i neshte da ia puska taia pamet :)

Отговор
в отговор на darklord #4

Re: string

Това е частен случай на така наречения "swap trick". Ето го в оригиналния му вариант, inspired by Scott Meyers:

...
string(str_data).swap(str_data);
...

...
vector<Type>(vect_data).swap(vect_data);
...

Отговор
в отговор на Pesho® #5

Re: string

Да, добре казано, сега го прочетох и аз.

А това всъщност прави shrink-to-fit. clear-a изглежда също интересно:

vector<Blah> v(10000000, Blah());

vector<Blah>().swap(v);

Отговор