http://cryinstone.livejournal.com/ ([identity profile] cryinstone.livejournal.com) wrote in [personal profile] pechkin 2005-01-23 06:48 am (UTC)

С очисткой памяти все в порядке: existing_keys.begin()->clear() излишне: достаточно второй строчки с erase, which deletes entries in the range [First, Last). Более того, это нужно для правильной работы функции: утечка памяти невозможна в принципе, так как existing_keys создается на стеке функции и разрушается при выходе из оной, а заодно стирается его содержимое.

Во-вторых, здесь проблема куда серьезней: existing_keys не имеет оператора сравнения для его членов (в твоем случае это vector
[Error: Irreparable invalid markup ('<char*>') in entry. Owner must fix manually. Raw contents below.]

С очисткой памяти все в порядке: existing_keys.begin()->clear() излишне: достаточно второй строчки с erase, which deletes entries in the range [First, Last). Более того, это нужно для правильной работы функции: утечка памяти невозможна в принципе, так как existing_keys создается на стеке функции и разрушается при выходе из оной, а заодно стирается его содержимое.

Во-вторых, здесь проблема куда серьезней: existing_keys не имеет оператора сравнения для его членов (в твоем случае это vector<char*>). Кто сказал, что вектора равны, когда имеют одинаковую начинку. О правильном использовании std::set и задавании оператора сравнения для членов см. http://www.sgi.com/tech/stl/set.html

В третьих, кто сказал что виртуальными функциями пользоваться в темплейтах нельзя?

А в-четвертых, за такие постинги, тебя конечно следует разфрендить! :))

Post a comment in response:

If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting