全局 int 替代

Global int alternative

我有一个 int 链表和一个名为 filter 的函数,它接收一个列表和一个条件函数。过滤器函数遍历列表中的节点,如果条件为真,则将其添加到新列表中。

我创建了这个,以便它通过我选择除以的数字过滤列表,而程序是 运行,但它使用全局 int,有没有不改变功能的替代方案过滤器,我想过让它调用一个函数来设置号码但没有成功,

static int choosenDividedBy = 1;

static bool dividedBy(int n);

int main() {
    Queue<int> q4;
    for (int i = 1; i <= 10; i++) {
        q4.pushBack(i);
    }
    std::cout << "Choose a number to divide by:" << std::endl;
    std::cin >> choosenDividedBy;
    q4 = filter(q4, dividedBy);
    for (Queue<int>::Iterator i = q4.begin(); i != q4.end(); ++i) {
        std::cout << *i << std::endl;
    }
    return 0;
}

static bool dividedBy(int n) {
    return (n % choosenDividedBy) == 0;
}

编辑:filter

template<class T>
Queue<T> filter(const Queue<T>& queue, bool (*condition)(T)) {
    Queue<T> newQueue;
    for(typename Queue<T>::ConstIterator i = queue.begin();i != queue.end();++i) {
        try {
            if(condition(*i)) {
                newQueue.pushBack(*i);
            }
        } catch(typename Queue<T>::ConstIterator::InvalidOperation& exception) {
            throw exception;
        }
    }
    return newQueue;
}

您将创建一个过滤器 class,它有一个普通的 (non-static) 成员,用于存储您的 int 并且具有您也拥有的 filter 方法。