C++之去重


note

今天刷題,忘了去重復庫函數,於是手寫了一個。 前提: 必須保證數組是有序的。

源碼

template <typename T>
void unique_arr(T arr[], int len, T* parr, int& out_len)
{
	if (1 > len || nullptr == parr || NULL == parr)
		return;

	int cur_index = 0;
	int pre_index = 0;
	int real_len = 1;

	parr[0] = arr[0];

	while (cur_index < len)
	{
		if (arr[pre_index] != arr[++cur_index])
		{
			pre_index = cur_index;
			parr[real_len++] = arr[cur_index];
		}
	}

	out_len = real_len;
}

調用

	int arr2[10] = { 0 };
	int real_len = 0;

	int arr[] = { 5, 1, 3, 2, 3, 4, 4, 2, 1, 6 };
	// 排序
	std::sort(std::begin(arr), std::end(arr));
	// 去重復
	unique_arr(arr, 10, arr2, real_len);

	// 輸出
	for (int i = 0; i < real_len - 1; ++i)
		std::cout << "  " << arr2[i];


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM