我有一個 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;
}
uj5u.com熱心網友回復:
您將創建一個具有普通(非靜態)成員的過濾器類,該成員存盤您的int并具有filter您也擁有的方法。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/482913.html
