Как написать эту функцию, используемую при поиске ряда элементов в массиве? - PullRequest
0 голосов
/ 08 мая 2018

Как написать эту функцию, используемую при поиске ряда элементов в массиве?

Я написал функцию с именем find, которая используется для поиска элемента независимо от того, находится он в массиве или нет. Теперь я хочу использовать find (), чтобы найти серию элементов, если все элементы существуют в этом массиве, то функция вернет true или вернет false:

template <typename T>
template <typename ...Args>
bool Vector<T>::find(const Args &...args) const {
    std::deque<bool> findDeque;
    findDeque.push_back(this->find(args...));        //The statement will lead to Exception: EXC_BAD_ACCESS (code=2, address=0x...)
    auto begin {findDeque.cbegin()};
    auto end {findDeque.cend()};
    if(begin == end) {
        return false;
    }
    while(begin != end) {
        if(!*begin++) {
            return false;
        }
    }
    return true;
}

Я пытался:

findDeque.push_back(this->find(args)...);

и

...
bool Vector<T>::find(Args &&...args) const {
...
findDeque.push_back(this->find(std::forward<Args>(args)...));
...

Возможно, я плохо изучил пакет параметров.
Как мне пересмотреть функцию, чтобы она успешно нашла.

1 Ответ

0 голосов
/ 08 мая 2018

У вас бесконечная рекурсия, потому что вы никогда не снимаете ни одного аргумента, когда вызываете find() от самого себя. Рекурсия никогда не приближается к завершению, и в конечном итоге ... переполнение стека!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...