pytanie teoretyczne. da się w jakiś sposób wyświetlić tylko np. 3 pierwsze (lub 3 ostatnie) elementy vectora typu struktura?
0
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)
2
Przeładuj operator<< dla Twojej struktury. https://dsp.krzaq.cc/post/304/jak-przeladowywac-operatory-w-mojej-klasie/
0
działa jak trzeba, dziękuje