Sortowanie Vectora Stringów

0

Witam ponownie. również ponownie mam problem z Vectorkiem. Moim głównym celem jest znalezienie najkrótszego słowa. Do tej pory napisałem funkcje zwracającą vector substringów (Może ktoś ma lepszy pomysł? - inne implementacje porównywania substringów i zwracania najkrótszego mi nie wychodziły).
Mając już vector substringów chciałbym je uporządkować w kolejności rosnącej ilości liter w słowach.
Jestem newbie i liczę, że ktoś bardziej doświadczony udzieli mi jakiejś rady co do sortowania, a implementacją zajmę się sam.
Podrzucę jeszcze kod (Może coś poprawić?):

vector <string> substringsVector(string & str)
{
	int liczbaSlow = 1;
	for (int i = 0; i < str.size(); i++)
	{
		if (str[i] == ' ') liczbaSlow++;
	}
	vector <string> Substringi(liczbaSlow);
	for (int k = 0, i = 0; i < str.size(); i++)
	{
		Substringi[k].push_back(str[i]);
		if (str[i] == ' ')
		{
			k++;
			continue;
		}
	}

	return Substringi;
} 
4

uzyj std::string z przeciazonym komparatorem ktory sprawdza size (czy wiekszy czy mniejszy)

http://stackoverflow.com/questions/4892680/sorting-a-vector-of-structs

4
std::sort(Substringi.begin(), Substringi.end(), [](auto const& l, auto const& r){
	return l.size() < r.size();
});

http://melpon.org/wandbox/permlink/kx3DufD883kG6w73

0

Dzięki wielkie!

 [](auto const& l, auto const& r)

Jeżeli ktoś mógłby mi wytłumaczyć co oznaczają te argumenty byłoby super. Dzięki Panowie!

2

Dowolny lvalue (auto dedukuje typ).

3
igorx2 napisał(a):
 [](auto const& l, auto const& r)

Jeżeli ktoś mógłby mi wytłumaczyć co oznaczają te argumenty byłoby super. Dzięki Panowie!

Inna postać (może jesteś bardziej przyzwyczajony do tej postaci):

[](const auto& l, const auto& r)

Jeżeli vector jest typu vector<string> to kompilator sobie to przetłumaczy na

[](const string& l, const string& r)

Po prostu auto jest tłumaczone na rzeczywisty typ przy kompilacji.

A te nawiasy kwadratowe to lambda, po szczegóły odsyłam do google'a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1