std::unique
是一種算法。所有stl算法在範圍上運行,而不是容器。
雖然算法可能交換元素內容,但這些元素的迭代器保持不變。
這是一個保證。
如果不是,那麼這可能無法正常工作:
#include <algorithm>
#include <vector>
#include <iostream>
#include <array>
int main()
{
auto unique_size = [](auto&& container)
{
std::sort(std::begin(container), std::end(container));
return std::unique(std::begin(container), std::end(container)) - std::cbegin(container);
};
std::cout << unique_size(std::vector<int> {6,5,4,4,3,2,1}) << std::endl;
std::cout << unique_size(std::array<int,7> {6,5,4,4,3,2,1}) << std::endl;
int x[] = {6,5,4,4,3,2,1};
std::cout << unique_size(x) << std::endl;
// Does this work? yes.
}
授權輸出:
6
6
6
不,不會。它甚至不能訪問容器,因爲你只是傳遞了2個迭代器。 – songyuanyao
@songyuanyao所以,'unique_count'是正確的。對? –
是的,它會很好。 – songyuanyao