카테고리 없음

알고리즘과 멤버 함수

naaya 2015. 6. 5. 14:56
반응형

알고리즘과 멤버 함수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<list>
#include<algorithm>
using namespace std;
int main(){
    list<int> coll;
    for(int i=1; i<=6++i){
        coll.push_front(i);
        coll.push_back(i);
    }
    coll.erase(remove(coll.begin(),coll.end(),3),coll.end()); // 나쁜 성능
 
    coll.remove(4); // 좋은 성능
}
 
cs

멤버 함수 대신 알고리즘을 사용할 수 있다고 하더라도 이것은 좋은 생각이 아니다.

멤버 함수의 경우, 동작하는 컨테이너가 어떤 컨테이너인지 알 수 있기 때문에 조금 더 최적화된 구현을 사용한다.

예를 들어, list에 대해 remove()를 호출하는 것은 좋은 예이다. 만약 list에 remove() 알고리즘을 사용한다면,

remove() 알고리즘은 현재 list와 동작한다는 사실을 모른다.

따라서 remove() 알고리즘은 list의 가장 큰 장점인, 삽입, 이동, 제거 능력을 활용하지 않고, 모든 컨테이너에 대해서

작동하는 방식으로 동작할 것이다.

ref : C++ Standard Library 

Josuttis, Nicolai M. 저

반응형