- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
class SNMPRemoteAgentSet
{
protected :
std::vector<SNMPRemoteAgent*> _agents;
}
void SNMPRemoteAgentSet::clear() {
while((int)_agents.size()) {
delete _agents[0];
_agents.erase(_agents.begin());
}
}
SNMPRemoteAgentSet::~SNMPRemoteAgentSet() {
clear();
}
ну правда думаю что все-таки лучше просто итератором от начала до конца пройтись удаляю каждый элемент
https://godbolt.org/z/RFa0wg
Хотя формально -- да: кучу раз assignment
При 1000 элементов получается вот такая прелесть:
http://quick-bench.com/R72b9076b0i9QncZzORh9Y25LU0
А при 10000 разница — три порядка.
Не смотря на одинаковое O(n) memmove будет быстрее чем куча assignment (при условии что компилятор не заменит assignment на memmove)
> расскажите человеку о std::unique_ptr<T, Deleter>.
> Делает всё тоже самое, только на за O(n^2)
Я скорее запутался тут, предполагая, что деструктор std::vector<std::unique_ptr> делает O(n^2) питушню
Мало было граблей, хотелось ещё чего-нибудь для 64-битной платформы добавить?