• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wektor do przechowywania współrzędnych

Object Storage Arubacloud
0 głosów
283 wizyt
pytanie zadane 21 maja 2021 w C i C++ przez Billy Użytkownik (680 p.)

Hejka,

//tytuł alternatywny: przechowywania zwiększającej się liczby kolejnych współrzędnych punktów na płaszczyźnie//

Tak jak w tytule, potrzebuję wektor do przechowywania współrzędnych. Po wpisaniu w google niewiele mogłem znaleźć. Chodzi o taki wektor, który na pozycji [0] miałby np. tablicę dwuelementową zawierającą współrzędne X i Y.
Wpadłem na taki pomysł:


vector <int[2]> snakeBodyCoords;

int element[2];
snakeBodyCoords.push_back(element);

Niestety kompilator wyprostował moje myślenie wyrzucając błąd: 
Error    C3074    an array cannot be initialized with a parenthesized initializer    

Z drugiej strony przyszło mi do głowy - jak miałbym się odwoływać do współrzędnych X i Y każdego elementu w tym wektorze? O tym nie pomyślałem wcześniej.

Teraz wpadłem na pomysł, żeby obie współrzędne przechowywać jako jeden string i po prostu napisać funkcję rozdzielającą i sklejającą po wyciąganiu z wektora (mało efektywne). 

 

Mam więc pytanie - czy jest jakieś lepsze rozwiązanie tego problemu? Czy jest możliwość przechowywania zwiększającej się liczby kolejnych współrzędnych punktów na płaszczyźnie?

1 odpowiedź

+1 głos
odpowiedź 21 maja 2021 przez tkz Nałogowiec (42,000 p.)
wybrane 21 maja 2021 przez Billy
 
Najlepsza
#include <iostream>
#include <vector>
#include <utility>

int main()
{
    std::vector<std::pair<int, int>> vec;
    vec.emplace_back(1,2);
    vec.emplace_back(5,3);
    vec.emplace_back(61,1);
    for(const auto&[x,y]:vec)
        std::cout<<x<<' '<<y<<'\n';
}

 

1
komentarz 21 maja 2021 przez j23 Mędrzec (194,920 p.)

Lub

#include <iostream>
#include <vector>
#include <array>
 
int main()
{
    std::vector<std::array<int, 2>> vec;
    vec.push_back({1, 2});
    vec.push_back({5, 3});
    vec.push_back({61, 1});
    
    for(const auto&[x, y] : vec)
        std::cout << x << ' ' << y << '\n';
}

 

komentarz 21 maja 2021 przez Billy Użytkownik (680 p.)
Dzięki wielkie panowie, właśnie o coś takiego chodziło :D
Późna godzina jednak robi swoje z myśleniem haha

Podobne pytania

0 głosów
1 odpowiedź 245 wizyt
0 głosów
1 odpowiedź 1,781 wizyt
pytanie zadane 20 kwietnia 2020 w C i C++ przez niezalogowany
0 głosów
2 odpowiedzi 260 wizyt
pytanie zadane 20 marca 2018 w C i C++ przez lukasz9819 Początkujący (360 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...