2014-12-10 3 views
1

가능한 한 빨리 데이터베이스에서 숫자를 조회 할 수있는 데이터 구조를 구현하려고합니다. 5450 개의 다른 숫자를 가진 데이터베이스가 있다고 가정 해 봅시다. 저의 가장 큰 관심사는 메모리 효율성이 아닌 속도입니다. 다중 웨이 트리에 대해이 기사를 온라인에서 찾았습니다 : http://c0.typesafety.net/courses/15122-f10/lectures/18-tries.pdf. 그래서 각 노드가 배열 크기가 10 인 10 방향 트리를 구현하기로 결정했지만 구조체의 클래스를 만드는 방법에 약간의 어려움이 있습니다. 여기에 대략 나와있는 대략적인 개요가 있습니다.워드 프로세싱 응용 프로그램

class MSTNode{ 
    bool isDigit; //is it one of the digit in the number 
    int arrayNode[]; 

    MST(bool isWord): isWord(isWord){ 
    arrayNode[] = [0,1,2,3,4,5,6,7,8,9]; 
    } 
} 


class MST{ 
    MSTNode * root; 

    //What functions should be included in this class? 
//Insert Function? 
//Search Function? 
} 

나는 공을 굴리는 데 약간의 도움이 필요합니다. 누군가 내 디자인에 대한 잠재적 인 문제를 지적 할 수 있다면 매우 감사 할 것입니다. 무엇을 포함해야합니까? 무엇을해서는 안되나요? 기본적으로, 나는 데이터 구조의 설계를 생각해 내는데 도움이 필요하다. 나는 당신에게서 무료 코드를 얻으려고합니다. 처음에는 설계에 도움이 필요하고 나머지는 구현할 수 있습니다. 첫 번째 MSTNode 루트로

class MSTNode{ 
public: 
    void Insert(unsigned int n) { 
     // GetOrCreate MSTNode in the first digit of n 
     // and recursively call insert with n without this digit 
     // once no more digit, set the isFinal flag. 
    } 

    bool Search(unsigned int n) const { 
     // Get MSTNode of the first digit of n 
     // if nullptr, return false. 
     // and recursively call Search with n without this digit 
     // once no more digit, return the isFinal flag. 
    } 

private: 
    std::unique_ptr<MSTNode> arrayNode[10]; 
    bool isFinal = false; //is it one of the digit in the number 
}; 

:

+1

이 질문은 코드 검토에 관한 내용이므로 주제가 아닌 것으로 보입니다. – 0x499602D2

+0

[B-tree] (http://en.wikipedia.org/wiki/B-tree)를 다시 발명하려고하십니까? –

+0

O (log (base 10) N)을 가진 나무를 발명하려고합니다. 문제는 각 노드에 크기 10의 배열이 있어야한다는 것입니다. –

답변

1

당신이 뭔가를 할 수 있습니다.

+0

정말 고마워요. 1 개의 빠른 질문. arrayNode 배열을 초기화해야합니까? 솔직하게 말해서, unique_ptr을 처음 보았습니다. –

+0

@JoeCool :'std :: unique_ptr'의 기본 생성자가 이미 포인터를'nullptr'로 설정했습니다. 따라서 명시 적 초기화가 필요 없습니다. – Jarod42

관련 문제