我試圖找到std::vector<double>
中最後一個非零元素的索引。如果向量中的最後一個元素不是零,那麼它應該返回最後一個元素的索引。查找std :: vector中的最後一個非零元素
我相信我可以用std::find_if_not
,反向迭代器和std::distance
,在此基礎上:
std::find_if_not(amounts.rbegin(), amounts.rend(), 0.0)
其中amounts
是std::vector<double>
,但我有這個與std::distance
和組合的難度前向迭代器amounts.begin()
。
另外,有沒有一種方法可以引入謂詞進行比較,比如說1e-8的容差?
我正在使用C++ 11。
如果您使用簡單的for循環,開發時間可能會更快。 –
我想我會被解僱,如果我這樣做:我需要這樣做很多次。 –
['std :: find_if_not'](http://en.cppreference.com/w/cpp/algorithm/find)的最後一個參數應該是一個一元謂詞 - 您可以使用lambda。 –