Использование этого кода следующей_комбинации

В настоящее время я пытаюсь создать комбинации из вектора, который содержит несколько целых чисел. А пока я хочу, чтобы он распечатал все комбинации, которые имеют длину to_generate. Я нашел этот код в комбинации и перестановке в C++, который использует std::next_permutation для генерации комбинаций. Код 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 В файле, включенном в /usr/include/c++/4.4/algorithm:62, из misc.hpp:6, из эквити.cpp:3:
/usr/include/c++/4.4/bits/stl_algo.h: в функции 'bool std::next_permutation(_BIter, _BIter, _Compare) [с _BIter = __gnu_cxx::__normal_iterator > >, _Compare = bool] ': misc.hpp: 15: создается из' bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool] 'equity.cpp:28: создается здесь / usr / include / C++/4.4/bits/stl_algo.h:3655: ошибка: "__comp" не может использоваться как функция /usr/include/c++/4.4/bits/stl_algo.h:3658: ошибка: "__comp" не может использоваться как функция В файле, включенном в /usr/include/c++/4.4/functional:70, из /usr/include/c++/4.4/memory:70, из /usr/include/boost/config/no_tr1/memory.hpp:21, из /usr/include/boost/get_pointer.hpp:12, из /usr/include/boost/bind/mem_fn.hpp:25, из /usr/include/boost/mem_fn.hpp:22, из / usr / включить / усиление / привязывать /bind.hpp:26, из /usr/include/boost/bind.hpp:22, из misc.hpp: 4, из equity.cpp:3:
/usr/include/c++/4.4/tr1_impl/functional: в глобальном масштабе: / usr / include / C++ / 4.4 / tr1_impl / function: в экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создается из 'std:: result_of' /usr/include/c++/4.4/bits/stl_algo.h:124: создается из 'const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [с _Tp = int, _Compare = std::_Bind, std::_Placeholder)>]' /usr/include/c++/4.4/bits/stl_algo.h:2301: создается из 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Careare) [с _RandomAccessIterator = ____, int_ize> =>>>>> _Compare = std:: _ Bind, std:: _ Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258: создается из' void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>] 'misc.hpp:13: создание экземпляра f rom 'bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]' equity.cpp:28: создан здесь /usr/include/c++/4.4/tr1_impl/functional:195: ошибка: 'const volatile bool' не является классом, структурой или объединенным типом /usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl': / usr / include / C++ / 4.4 / tr1_impl / functions: 149: создается из 'std:: result_of' /usr/include/c++/4.4/bits/stl_algo.h:124: создается из медианы const _Tp & std:: __ (const _Tp &, const _Tp &, const _Tp &, _Compare) [с _Tp = int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/includec /stl_algo.h:5258: создается из 'void std:: sort (_RAIte r, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>] 'misc.hpp:13: создается из' bool next_combination (RandIt, RandIt, RandIt, Сравните) [с RandIt = __gnu_cxx::__normal_iterator > >, Сравнить = bool] 'equity.cpp:28: создан здесь /usr/include/c++/4.4/tr1_impl/functional:195: ошибка: "volatile bool" не является класс, структура или тип объединения /usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создан из 'std:: result_of '/usr/include/c++/4.4/bits/stl_algo.h:124: создается из' const _Tp& std::__median(const _Tp&, const _Tp&, const _Tp&, _Compare) [с _Tp = int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) с помощью _ _ = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std:: _ Bind, std:: _ Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258: создается из' void std::sort(_RAIter, _RAIter, _Compare) [with _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>] 'misc.hpp:13: создается из' bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool] 'equity.cpp:28: создан здесь /usr/include/c++/4.4/tr1_impl/functional:195: error:' const bool 'не является классом, структурой или Тип объединения /usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создается из 'std:: result_of' / usr /include/c++/4.4/bits/stl_algo.h:124: создается из '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: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c+ stl_algo.h: 5258: создается из 'void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]' misc.hpp:13: создается из 'bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]' equity.cpp:28: создается здесь /usr/include/c++/4.4 / tr1_impl / functions: 195: ошибка: 'bool' не является классом, структурой или типом объединения. В файле, включенном в /usr/include/c++/4.4/algorithm:62, из misc.hpp:6, из equity.cpp:3:
/usr/include/c++/4.4/bits/stl_algo.h: в функции '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: создается из 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std> _ _ /include/c++/4.4/bits/stl_algo.h:5258: создается из 'void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std:: _ Bind, std:: _Placeholder)>] 'misc.hpp:13: создается из' bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool] 'equity.cpp:28: создается из здесь /usr/include/c++/4.4/bits/stl_algo.h:124: ошибка: нет совпадения для вызова '(std::_Bind, std::_Placeholder)>) (const int&, const int&)' / usr / include / C++/4.4/bits/stl_algo.h:125: ошибка: нет совпадения для вызова '(std::_Bind, std::_Placeholder)>) (const int&, const int&)' / usr / include / C++/4.4/bits/stl_algo.h:127: ошибка: нет совпадения для вызова '(std::_Bind, std::_Placeholder)>) (const int&, const int&) '/usr/include/c++/4.4/bits/stl_algo.h:131: ошибка: нет совпадения для вызова' (std::_Bind, std::_Placeholder)>) (const int&, const int&) '/usr/include/c++/4.4/bits/stl_algo.h:133: ошибка: нет совпадения для вызова' (std::_Bind, std::_Placeholder)>) (const int&, const int&) 'в файле включены из /usr/include/c++/4.4/functional:70, из /usr/include/c++/4.4/memory:70, из /usr/include/boost/config/no_tr1/memory.hpp:21, из / usr /include/boost/get_pointer.hpp:12, из /usr/include/boost/bind/mem_fn.hpp:25, из /usr/include/boost/mem_fn.hpp:22, из /usr/include/boost/bind/bind.hpp:26, из /usr/include/boost/bind.hpp:22, из misc.hpp: 4, из equity.cpp:3:
/usr/include/c++/4.4/tr1_impl/functional: в глобальном масштабе scope:
/usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создается из 'std:: result_of' /usr/include/c++/4.4/bits/stl_algo.h:2230: создается из '_RandomAccessIterator std::__unguarded_partition(_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>] '/us+//4//// /stl_algo.h:2301: создается из 'void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Somp = int = st _Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258: создается из' void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>] 'misc.hpp:13: создается из' bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool] 'equity.cpp:28: создается здесь /usr/include/c++/4.4/tr1_impl/functional:195: ошибка: 'const volatile bool' не является классом, структурой или типом объединения /usr/include/c++/4.4/tr1_im pl / functions: В экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создается из 'std:: result_of' /usr/include/c++/4.4/bits/stl_algo. h: 2230: создается из '_RandomAccessIterator std:: ___ unguarded_partition (_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, __ _ _ _ _> = _> = _) = stholder) st '/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gn int_ize> => _>>>, _Compare = std:: _ Bind, std:: _ Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258: создается из' void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>] 'misc.hpp:13: создается из' bool next_combination (RandIt, RandIt, RandIt, Compare) [w ith RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool] 'equity.cpp:28: создан здесь /usr/include/c++/4.4/tr1_impl/functional:195: ошибка:' volatile bool 'не является классом, struct, или тип объединения /usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl':
/usr/include/c++/4.4/tr1_impl/functional:149: создан из 'std:: result_of '/usr/include/c++/4.4/bits/stl_algo.h:2230: создается из' _RandomAccessIterator std:: __ unguarded_partition (_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [с _RandomAccess_tegn____t___>>>>> = => _Compare = std:: _ Bind, std:: _ Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Comp) с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258:   instantiat редактирование из 'void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]' misc.hpp:13: создается из ' bool next_combination (RandIt, RandIt, RandIt, Сравнить) [с RandIt = __gnu_cxx::__normal_iterator > >, Сравнить = bool] 'equity.cpp:28: создан здесь /usr/include/c++/4.4/tr1_impl/functional:195: ошибка: 'const bool' не является классом, структурой или объединением типа /usr/include/c++/4.4/tr1_impl/functional: в экземпляре 'std:: _ Result_of_impl': /usr/include/c++/4.4/tr1_impl / function: 149: создается из 'std:: result_of' /usr/include/c++/4.4/bits/stl_algo.h:2230: создается из '_RandomAccessIterator std:: __ unguarded_partition (_RandomAccessIterator, _RandomAccessIterator, _R), _T = __gnu_cxx::__normal_iterator > >, _Tp = int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std:: __ introsort_loop (_RandomAcc essIterator, _RandomAccessIterator, _Size, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4 stl_algo.h: 5258: создается из 'void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]' misc.hpp:13: создается из 'bool next_combination(RandIt, RandIt, RandIt, Compare) [with RandIt = __gnu_cxx::__normal_iterator > >, Compare = bool]' equity.cpp:28: создается здесь /usr/include/c++/4.4 / tr1_impl / functions: 195: ошибка: 'bool' не является классом, структурой или типом объединения. В файле, включенном в /usr/include/c++/4.4/algorithm:62, из misc.hpp:6, из equity.cpp:3:
/usr/include/c++/4.4/bits/stl_algo.h: в функции '_RandomAccessIterator std:: __ unguarded_partition (_RandomAccessIterator, _RandomAccessIterator, _Tp, _Compare) [с _RandomAccessIterator = ___> _> _____) _C ompare = std:: _ Bind, std:: _ Placeholder)>] ':
/usr/include/c++/4.4/bits/stl_algo.h:2301: создается из' void std::__introsort_loop(_RandomAccessIterator, _RandomAccessIterator, _Size, _Comp) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Size = long int, _Compare = std::_Bind, std::_Placeholder)>] '/usr/include/c++/4.4/bits/stl_algo.h:5258: создан из 'void std::sort(_RAIter, _RAIter, _Compare) [с _RAIter = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]' misc.hpp:13: создается из 'bool next_combination (RandIt, RandIt, RandIt, Сравнить) [с RandIt = __gnu_cxx::__normal_iterator > >, Сравнить = bool] 'equity.cpp:28: создан здесь /usr/include/c++/4.4/bits/stl_algo.h:2230: ошибка: нет соответствия для вызова '(std::_Bind, std::_Placeholder)>) (int&, int&)' /usr/include/c++/4.4/bits/stl_algo.h:2233: ошибка: нет соответствия для вызов '(std::_Bind, std::_Placeholder)>) (int&, int&)' /usr/include/c++/4.4/bits/stl_algo.h: в функции ion 'void std::__inserttion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare = std::_Bind, std::_Placeholder)>]'/c +//////bits/stl_algo.h:2193: создается из 'void std::__final_insertion_sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [с _RandomAccessIterator = __gnu_cxx::__normal_iterator > >, _Compare =)> std)) 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, R andIt, 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, _Co mpare) [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: instanti ated 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

1 ответ

Решение

Второй аргумент шаблона не должен быть 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 << " ";

И используйте пробелы - это заставляет код выглядеть лучше.

Другие вопросы по тегам