wyświetlanie fragmentu vectora

0

pytanie teoretyczne. da się w jakiś sposób wyświetlić tylko np. 3 pierwsze (lub 3 ostatnie) elementy vectora typu struktura?

0

Tak

0

nie dopisałem, a w jaki sposób? xd

2

Forem, albo z użyciem iteratorów.

std::vector<bar> foo = { ... };

// pierwsze trzy
// 1
std::copy(foo.begin(), foo.begin()+3, std::ostream_iterator<bar>(std::cout));
// 2
std::copy_n(foo.begin(), 3, std::ostream_iterator<bar>(std::cout));
// 3
for(size_t i = 0; i < 3; i++) std::cout << foo[i];
// pewnie milion innych sposobów

// ostatne trzy
// 1 odwrotna kolejność
std::copy(foo.rbegin(), foo.rbegin()+3, std::ostream_iterator<bar>(std::cout));
// 2 odwrotna kolejność
std::copy_n(foo.rbegin(), foo.rend(), std::ostream_iterator<bar>(std::cout));
// 3
std::copy(foo.end()-3, foo.end(), std::ostream_iterator<bar>(std::cout));
// 4
std::copy_n(foo.end()-3, 3, std::ostream_iterator<bar>(std::cout));
// 5
for(size_t i = foo.size() - 3; i < foo.size(); i++) std::cout << foo[i];
// pewnie milion innych sposobów
0

no właśnie próbowałem i forem i iteratorem ale wywala błędy:


bool comp(Baza &r1, Baza &r2) {
	return r1.rozmiar_buta < r2.rozmiar_buta;
}
struct Baza {
	string imie;
	string nazwisko;
	string email;
	float rozmiar_buta;
};

vector<Baza> vec;
sort(vec.begin(), vec.end(), comp);

for (size_t i = 0; i < 3; i++) {
		cout << vec[i];
	}

do wektora wpisuje sobie dane z pliku, dalej sortuje wg rozmiaru buta i muszę wyświetlić email do 3 pierwszych osób na liście

błąd przy tym wyświetlaniu: E0349 żaden operator "<<" nie pasuje do tych argumentów operacji
C2679 dwuargumentowy "<<": nie znaleziono żadnego operatora, który przyjmuje prawostronny operand typu "_Ty" (lub nie istnieje akceptowalna konwersja)

0

działa jak trzeba, dziękuje

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