알고리즘/C++

C++ STL - hash_map, vector사용하기

0.genius 2018. 9. 19. 12:44

class node를 정의하는데 자식이 여러개인 경우 , 배열로 만들자니 메모리 낭비가 너무 크고, 포인터로 만들자니 너무 복잡해져서 라이브러리 vector를 사용하기로 하였다.


다음과 같이 정의하고 


class node {

private:

노드 정보

..

..

vector<node*> child;

}


child.push_back(n);

이렇게 넣어주었다.


vector가 list보다 좋은 점은 배열처럼 index로 접근 할수 있다는 점이다.


지금 하는 작업중에서, 노드의 순서를 바꾸는 작업은 없고 인덱스를 통해 접근해야하는 과정이 많기 때문에 vector를 사용하였다.


hash_set이 아닌 hash_map을 사용한 이유는 타입이 다른 두 가지의 정보를 저장해야하기 때문이다.


정의는 hash_map<string, node*> incode;

이렇게 해주면 된다. 


입력은 incode.insert(hash_map<string, node*>::value_type(str, Node)); 으로 해주면 된다.