如何编写用于查找数组中一系列元素的函数?
我编写了一个名为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)...));
...
也许我研究参数包扩展得很厉害 我应该如何修改功能以使其成功找到。
答案 0 :(得分:1)
你有无限的递归,因为当你从它自己调用find()
时,你永远不会剥离一个参数。递归永远不会接近终止,最终......堆栈溢出!