1
在C++中,是否可以傳入只迭代滿足某些條件的元素的迭代器?儘管編寫自己的迭代器類肯定是可行的,但我想知道存在一個標準庫解決方案。例如,std::discrete_distribution
的構造函數接受兩個迭代器(begin和end)的輸入。現在,我需要做到以下幾點:傳遞迭代器只迭代滿足特定條件的元素
std::vector<int> x = {1, 2, 3, 4, 5};
std::vector<int> y;
std::copy_if(x.begin(), x.end(), std::back_inserter(y), my_condition);
std::discrete_distribution dd(y.begin(), y.end());
但是這將需要複製的y
的elemnts兩次。我寧願像以下:
std::vector<int> x = {1, 2, 3, 4, 5};
std::discrete_distribution dd(std::condition_iter(x.begin(), my_condition), x.end());
你可以從'std :: vector :: iterator'派生自己的迭代器類,並覆蓋'operator ++'來使用你的條件。看看這裏:https://stackoverflow.com/questions/25772860/c-iterator-over-certain-elements-in-vector – nitronoid