我有一個QList
並希望並行處理其所有元素。問題是我需要傳遞一個參數到my_function
。下面的代碼不允許這樣做。QT,併發編程和傳遞參數到功能
QList<something> output = QtConcurrent::blockingMapped(
input,
my_function
);
我可以爲每組參數使用不同的函數。我也可以使用全局變量。我也可以嘗試在QT函數中重寫構建。但是,應該有更好的解決方案。任何想法?
我有一個QList
並希望並行處理其所有元素。問題是我需要傳遞一個參數到my_function
。下面的代碼不允許這樣做。QT,併發編程和傳遞參數到功能
QList<something> output = QtConcurrent::blockingMapped(
input,
my_function
);
我可以爲每組參數使用不同的函數。我也可以使用全局變量。我也可以嘗試在QT函數中重寫構建。但是,應該有更好的解決方案。任何想法?
假設您要傳遞給函數的參數與項目無關,您可以創建一個函數,它繼承std::unary_function<const something&,void>
,它的構造函數接受要傳遞給它的參數。然後,使用函子的地方,你會使用該函數。例如,
struct MyFunctor : public std::unary_function<const something&,void> {
public:
myFunctor(int s) { _i = i; }
void operator()(something& str) {
something.apply(_i);
}
private:
int _i;
};
…
MyFunctor myFunctor(i);
QList<something> output = QtConcurrent::blockingMapped(
input,
myFunctor
);
你需要將什麼參數傳遞給函數?你不能直接做到這一點。你可以做的是將參數傳遞給一個不同的結構,其中定義了一個operator()
,你可以從中訪問該參數。那就是如果你不想使用全局值。
看看here的例子。
我想傳遞一個整數(int)。 – Michas