2010-12-14 1 views
4

現在いくつかの整数を含むベクトルから組み合わせを生成しようとしています。今のところ、to_generateの長さの組み合わせをすべて印刷したいと思っています。 このコードは、std :: next_permutationを使用して組み合わせを生成するcombination and permutation in C++にあります。次のようにnext_combinationコードは次のとおりです。このnext_combinationコードの使用

template<class RandIt, class Compare> 
bool next_combination(RandIt first, RandIt mid, RandIt last, Compare comp) 
{ 
    std::sort(mid, last, std::tr1::bind(comp, std::tr1::placeholders::_2 
             , std::tr1::placeholders::_1)); 
    return std::next_permutation(first, last, comp); 
} 

私はこのようにそれを呼び出そうとしました:

bool mycomp (int c1, int c2) 
{ return (c1)<(c2); } 


void test_combos(int to_generate){ 
    std::vector<int> combo(30); 
    for(int i=0;i<30;++i){ 
     combo.push_back(i); 
    } 
    while(next_combination<std::vector<int>::iterator, bool>(combo.begin(),combo.begin()+to_generate,combo.end(),mycomp)){ 
     for(std::vector<int>::iterator iter = combo.begin(); iter != combo.end() ; ++iter){ 
      std::cout << *iter << " "; 
     } 
    } 
} 

が、私は巨大なSTL文字化けエラーメッセージが表示されます。ここで間違っていることが本当に明白なことはありますか?

std :: placeholderはどのヘッダを見つけることができますか?

要求されたとして、ここではエラーメッセージは次のとおりです。

 
$ make 
g++ -g -std=c++0x -I /usr/lib/ -c equity.cpp 
In file included from /usr/include/c++/4.4/algorithm:62, 
       from misc.hpp:6, 
       from equity.cpp:3: 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘bool std::next_permutation(_BIter, _BIter, _Compare) [with _BIter = __gnu_cxx::__normal_iterator > >, _Compare = bool]’: 
misc.hpp:15: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:3655: error: ‘__comp’ cannot be used as a function 
/usr/include/c++/4.4/bits/stl_algo.h:3658: error: ‘__comp’ cannot be used as a function 
In file included from /usr/include/c++/4.4/functional:70, 
       from /usr/include/c++/4.4/memory:70, 
       from /usr/include/boost/config/no_tr1/memory.hpp:21, 
       from /usr/include/boost/get_pointer.hpp:12, 
       from /usr/include/boost/bind/mem_fn.hpp:25, 
       from /usr/include/boost/mem_fn.hpp:22, 
       from /usr/include/boost/bind/bind.hpp:26, 
       from /usr/include/boost/bind.hpp:22, 
       from misc.hpp:4, 
       from equity.cpp:3: 
/usr/include/c++/4.4/tr1_impl/functional: At global scope: 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:124: instantiated from ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘const volatile bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:124: instantiated from ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘volatile bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:124: instantiated from ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘const bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:124: instantiated from ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘bool’ is not a class, struct, or union type 
In file included from /usr/include/c++/4.4/algorithm:62, 
       from misc.hpp:6, 
       from equity.cpp:3: 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [with _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:124: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (const int&, const int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h:125: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (const int&, const int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h:127: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (const int&, const int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h:131: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (const int&, const int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h:133: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (const int&, const int&)’ 
In file included from /usr/include/c++/4.4/functional:70, 
       from /usr/include/c++/4.4/memory:70, 
       from /usr/include/boost/config/no_tr1/memory.hpp:21, 
       from /usr/include/boost/get_pointer.hpp:12, 
       from /usr/include/boost/bind/mem_fn.hpp:25, 
       from /usr/include/boost/mem_fn.hpp:22, 
       from /usr/include/boost/bind/bind.hpp:26, 
       from /usr/include/boost/bind.hpp:22, 
       from misc.hpp:4, 
       from equity.cpp:3: 
/usr/include/c++/4.4/tr1_impl/functional: At global scope: 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:2230: instantiated from ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘const volatile bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:2230: instantiated from ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘volatile bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:2230: instantiated from ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘const bool’ is not a class, struct, or union type 
/usr/include/c++/4.4/tr1_impl/functional: In instantiation of ‘std::_Result_of_impl’: 
/usr/include/c++/4.4/tr1_impl/functional:149: instantiated from ‘std::result_of’ 
/usr/include/c++/4.4/bits/stl_algo.h:2230: instantiated from ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/tr1_impl/functional:195: error: ‘bool’ is not a class, struct, or union type 
In file included from /usr/include/c++/4.4/algorithm:62, 
       from misc.hpp:6, 
       from equity.cpp:3: 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_algo.h:2301: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:2230: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h:2233: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_algo.h:2193: instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5260: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:2128: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_algo.h:5108: instantiated from ‘void std::partial_sort(_RAIter, _RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2288: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:1919: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
/usr/include/c++/4.4/bits/stl_algo.h: In function ‘void std::__unguarded_linear_insert(_RandomAccessIterator, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_algo.h:2134: instantiated from ‘void std::__insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2193: instantiated from ‘void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5260: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_algo.h:2084: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
In file included from /usr/include/c++/4.4/bits/stl_algo.h:62, 
       from /usr/include/c++/4.4/algorithm:62, 
       from misc.hpp:6, 
       from equity.cpp:3: 
/usr/include/c++/4.4/bits/stl_heap.h: In function ‘void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Distance = long int, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_heap.h:434: instantiated from ‘void std::make_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:1917: instantiated from ‘void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5108: instantiated from ‘void std::partial_sort(_RAIter, _RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2288: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_heap.h:303: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
/usr/include/c++/4.4/bits/stl_heap.h: In function ‘void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Distance = long int, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’: 
/usr/include/c++/4.4/bits/stl_heap.h:316: instantiated from ‘void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Distance = long int, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_heap.h:434: instantiated from ‘void std::make_heap(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:1917: instantiated from ‘void std::__heap_select(_RandomAccessIterator, _RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5108: instantiated from ‘void std::partial_sort(_RAIter, _RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:2288: instantiated from ‘void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>]’ 
/usr/include/c++/4.4/bits/stl_algo.h:5258: instantiated from ‘void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]’ 
misc.hpp:13: instantiated from ‘bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]’ 
equity.cpp:28: instantiated from here 
/usr/include/c++/4.4/bits/stl_heap.h:180: error: no match for call to ‘(std::_Bind, std::_Placeholder)>) (int&, int&)’ 
make: *** [equity.o] Error 1 
+0

"巨大な歪んだエラーメッセージ"を怖がらないでください。私たちの中には読める人もいますし、それらをコンパクトにしてシンプルにするためのツールもあります。 –

+2

'bool'テンプレートパラメータを' while'ループのテンプレートインスタンス化から削除するとコンパイルされます。あなたが直面している問題であるかどうかはわかりません。 – Naveen

+0

@Naveen、それはそれを修正するようですが、私はなぜこれが当てはまるかわかりません。 – shuttle87

答えて

2

第2のテンプレート引数はboolすべきではありません。コンパイラにタイプを処理させ、単に次のように書くことができます。

while(next_combination(combo.begin(), combo.begin() + to_generate, combo.end(), std::less<int>())) 
    for(std::vector<int>::iterator iter = combo.begin(); iter != combo.end() ; ++iter) 
     std::cout << *iter << " "; 

そしてスペースを使用すると、コードがより見やすくなります。

+0

私はC++のテンプレートではかなり経験がありません。なぜboolはうまくいかないのですか? 2番目の引数はmycompの戻り型ではありませんか? – shuttle87

+1

2番目の引数は 'comp'(この場合は' mycomp')の型です。おそらく 'bool(*)(int、int)'です。また、自分自身の 'mycomp'関数の代わりに' std :: less () 'を使うこともできます。 –

+0

+1 std :: lessを使用するために、私はそれについて忘れていました。 – shuttle87

関連する問題