2013-09-30 2 views
0

단순 격자 검색을 사용하여 부분 합계를 찾기 위해 stxxl 벡터의 블록 크기 BlkSize_ 매개 변수를 최적화해야합니다. stxxl 벡터에 대해이를 지정하는 유일한 방법은 벡터 생성기에서 템플릿 매개 변수로 사용하는 것 같습니다. 블록 크기 템플릿 매개 변수가 주어진 경우 partial_sum 함수에서 사용하는 시간을 출력하는 재귀 적 템플릿 함수를 사용하고 싶습니다. 매개 변수로 벡터 크기를 전달해야합니다.C++에서 STXXL 템플릿을 사용하는 재귀 템플릿 함수의 오류

여기 내 코드입니다 :

template<unsigned int size> 
void TestPartialSum(int N) { 
    typedef stxxl::VECTOR_GENERATOR< 
      int, 
      1, 
      1, 
      size, 
      stxxl::RC, 
      stxxl::lru>::result xxlvector; 

    xxlvector v(N); 
    xxlvector res(N); 
    iota(v.begin(), v.end(), 5, 2); 
    std::cerr << "N = " << N << std::endl; 
    Profiler profiler; 
    std::partial_sum(v.begin(), v.end(), res.begin()); 
    TestPartialSum<size/2>(N); 
    return; 
} 

그러나 struct stxxl::VECTOR_GENERATOR 정확히 6 개 매개 변수 (class Tp_, unsigned int PgSz_, unsigned int Pages_, unsigned int BlkSize_, class AllocStr_, stxxl::pager_type Pager_)을 소요하지만,이 수신하십시오 typedef 라인

error: too few template-parameter-lists 

합니다.

무엇이 문제 일 수 있습니까?

당신이 result 것을 알려줄 수있는 typename 누락 된 것 같습니다
+0

오류가 발생한 행은 무엇입니까? – doctorlove

+0

@doctorlove,'typedef ... ' – FrauHahnhen

답변

2

는 유형 :

typedef typename stxxl::VECTOR_GENERATOR< 
      int, 
      1, 
      1, 
      size, 
      stxxl::RC, 
      stxxl::lru>::result xxlvector; 

result의 해석은 코드에서 템플릿 인수 size에 따라, 그리고에 C++에 특별한 규정이있는typename 키워드가 사용되지 않는 한 비 유형 으로 해석하십시오. 자세한 내용은 Where and why do I have to put the “template” and “typename” keywords?을 참조하십시오.

+0

네, 고쳐 주셔서 고마워요! – FrauHahnhen