مرتب کردن vector دو بعدی(نقاط) در c++ - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

مرتب کردن vector دو بعدی(نقاط) در c++

+2 امتیاز

سلام .

من یک وکتور 2 بعدی دارم به این شکل :

{  {1,2} ,  {3,1} , {1,4,6,7} , {1,4} , {1,2,3} , {3,2} , {3,2,1}

 می خوام بعد از مرتب سازی وکتور به این شکل در بیاد :

{  {1,2} ,  {1,2,3}, {1,4} , {1,4,6,7}  , {3,1} , {3,2} , {3,2,1} 

از چه راهی استفاده کنم که سریع هم باشه ؟

سوال شده بهمن 18, 1392  بوسیله ی terminator (امتیاز 14)   1 1 1
ویرایش شده بهمن 6, 1397 بوسیله ی مصطفی ساتکی

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

سلام با std::sort قابل انجامه .

#include <iostream>
#include <algorithm>
#include <vector>

template <class T>
bool compare(const std::vector<T>& a, const  std::vector<T>& b)
{
	for (size_t i = 0; i < a.size() && i < b.size(); i++)
	{
		if (a[i]<b[i])
			return true;
		else if (a[i]>b[i])
			return false;
	}
	if (a.size() < b.size())
		return true;
	else
		return false;
}

int main()
{
	std::vector<std::vector<int> > a ={ { 1, 2 }, { 3, 1 }, { 1, 4, 6, 7 }, { 1, 4 }, { 1, 2, 3 }, { 3, 2 }, { 3, 2, 1 } };

	//sort elements
	std::sort(a.begin(), a.end(), compare<int>);

	//test
	for (size_t i = 0; i < a.size(); i++)
	{
		std::cout << "{";
		for (size_t j = 0; j < a[i].size(); j++)
		{
			std::cout << a[i][j] << "  ";
		}
		std::cout << "}\n";
	}
	return 0;
}

 

 

پاسخ داده شده بهمن 18, 1392 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده مرداد 17, 1393 بوسیله ی BlueBlade
...