全局 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
方法。
我有一个 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
方法。