کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.
کدنویس۲۱

کدنویس۲۱

با کد نویس 21 کد نویس باشید.

آموزش sorting (مرتب سازی) در سی پلاس پلاس

سلام دوستان محمدحسین قدکساز زاده هستم امیدوارم که حالتون خوب باشه. به یه آموزش دیگه خوش اومدید تو این آموزش درباره sorting یا مرتب سازی اعضای آرایه صحبت خواهیم کرد.

 


 

خب سی پلاس پلاس یک فانکشن به نام std::sort داره که تو این پست از اون استفاده می کنیم. برای استفاده از این فانکشن ابتدا باید algorithm را اینکلود کنیم:

1
#include <algorithm>

خب من تو این آموزش میخواهم از vector ها(مانند لیست در سی شارپ) استفاده کنیم پس vector هم اینکلود می کنیم:

1
#include <vector>

ابتدا یک وکتور تعریف می کنیم:

1
std::vector<int> values = {3,1,4,2,5};

خب همانطور که می بینید مقدار های وکتور ما ترتیب خاصی ندارند برای اینکه آن ها را مرتب کنیم مانند زیر عمل می کنیم:

1
std::sort(values.begin(),values.end());

فانکشن std::sort دو پارامتر می گیرد. پارامتر اول آدرس اول آرایه یا وکتور ما در مموری است و پارامتر دوم آدرس پایان آرایه یا مموری ما در مموری می باشد. وکتور دو فانکشن begin و end دارد که خودش به ما این دو مقدار را می دهد و ما می توانیم از آنها استفاده کنیم.

کد بالا وکتور ما را از کوچک به بزرگ مرتب می کند.

فانکشن sort یک اورلود(overload) دیگر هم دارد که ما می توانیم به آن یک پارامتر دیگر بدهیم و نحوه مرتب کردن اعضا را تعیین کنیم که می تواند از مقدار های قبلی c++ باشد یا یک لمبدا(فانکشن های تک خطی) باشد. مثال:

1
std::sort(values.begin(),values.end(),std::greater<int>());

با std:greater گفتیم که از بزرگ به کوچک مرتب شود.

1
2
3
4
5
std::sort(values.begin(),values.end(),[](int a,int b){

return a < b;

});

در مثال بالا از یک لمبدا استفاده شده است. لمبدای نوشته شده باید دو int به صورت پارامتر بگیرد. اگر ما در لمبدای خود true برگردانیم پارامتر a هنگام مرتب شدن قبل از b قرار می گیرد و اگر false باشد b قبل از a قرار می گیرد. مثال دیگر:

1
2
3
4
5
6
7
std::sort(values.begin(),values.end(),[](int a,int b){
if(a == 1)
return false;
if(b == 1)
return true;
return a < b;
});

مقادیر وکتور پس از مرتب شدن  در مثال بالا:

1
2,3,4,5,1

خب دوستان ممنون که با من همراه بودید اگه خوشتون اومده لایک کنید و همینطور اگه سوالی داشتید در قسمت کامنت ها بپرسید. تا آموزشی دیگر خداحافظ.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد