zapisywanie adresów struktur do wskaźnika na tablicę struktur

0

Cześć mam taki problem że muszę stworzyć funkcję która:
losowanie – funkcja:

  • pobiera jako argument liczbę N struktur, które mają zostać utworzone;
  • dynamicznie alokuje pamięć na tablicę N wskaźników na struktury;
  • następnie alokuje kolejno N struktur, przypisując uzyskane adresy do kolejnych komórek utworzonej wcześniej tablicy;

problem mam z punktem nr 3, dlatego proszę o pomoc i doradzenie co robię źle.

oto kawałek kodu

struktura losowanie(int N, struktura *&t,struktura *&wsk)
{
	cout<<"Podaj liczbe struktur"<<endl;
	cin>>N;
	t=new struktura [N];//tablica przechowująca struktury
	wsk=new struktura[N];//wsk to tablica na adresy struktur

	for (int i=0;i<N;i++)
	{
		wsk[i]=&t[i];
	}; 

Z góry dziękuję za pomoc.

0
#include <iostream>

struct Foo {
    int a;
};

int main()
{
    Foo* f = new Foo[2];
    f[0].a = 1;
    f[1].a = 2;

    Foo** ff = new Foo*[2];
    ff[0] = &f[0];
    ff[1] = &f[1];

    for (int i = 0; i < 2; ++i) {
        std::cout << f[i].a << ' ' << ff[i]->a << '\n';
    }

    delete[] ff;
    delete[] f;
}

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

Nie bawiłbym się w takie ceregiele, tylko skorzystał z std::vector.

std::vector<struktura*> struktury; // ale tutaj trzeba pamiętać o zwolnieniu pamięci 

lub bezpieczniej

#include <iostream>
#include <memory>
#include <vector>

struct Foo {
    int a;
    Foo(int n) : a{ n } {}
};

int main()
{
    std::vector<std::unique_ptr<Foo>> foo;
    foo.push_back(std::make_unique<Foo>(1));
    foo.push_back(std::make_unique<Foo>(2));

    for (std::size_t i = 0; i < foo.size(); ++i) {
        std::cout << foo[i]->a << ' ';
    }
    std::cout << '\n';
} 

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

0

tylko std::vector nie mieliśmy jeszcze na zajęciach , a chcę nauczyć się najpierw tego co już mieliśmy :)

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