在C++中實現類似LINQ的功能,可以使用lambda表達式和標準庫中提供的算法來實現。以下是一個簡單的示例:
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
template <typename Container, typename Func>
auto linq(Container&& container, Func&& func) {
using T = typename std::decay<decltype(*std::begin(container))>::type;
std::vector<T> result;
std::copy_if(std::begin(container), std::end(container), std::back_inserter(result), func);
return result;
}
int main() {
std::vector<int> numbers = {1, 2, 3, 4, 5};
auto even_numbers = linq(numbers, [](int x) { return x % 2 == 0; });
for (auto num : even_numbers) {
std::cout << num << " ";
}
std::cout << std::endl;
return 0;
}
在這個示例中,我們定義了一個名為linq
的函數模板,它接受一個容器和一個lambda表達式作為參數,并返回一個新的容器,其中包含滿足lambda表達式條件的元素。在main
函數中,我們使用linq
函數來篩選出偶數,并打印出結果。
這只是一個簡單的示例,你可以根據自己的需求擴展和修改這個模板函數,以實現更多類似LINQ的功能。