kopia wartosci przekazywanej przez wskaznik

0

Dzień dobry
Rozwiązuję zadanie i potrzebuje się dowiedzieć jak stworzyć kopię wartości przekazywanej przez wskaźnik.
To znaczy (dla jasności)- nie kopię samego wskaźnika, czyli adresu w pamięci komputera, tylko wartości- w typ przypadku całej tablicy wartości, na jaką on wskazuje.

  • chciałam dodać skopiowaną tablicę do stworzonego wcześniej wektora tablic typu int tak, żeby nie zachodziły w niej już żadne zmiany, kiedy będę zmieniać wartość... oryginału od którego powstała kopia tablicy przekazanego do funkcji przez wskaźnik.
    Mam nadzieję, że istnieje w ogóle taki sposób ;-)

*jeśli komuś chętnemu do udzielenia odpowiedzi pomogłoby udostępnienie kodu programu, to proszę napisać- dodam w komentarzu.

Z góry dziękuję za odpowiedź!

2

Przede wszystkim: jaki język? W tagach zamieściłaś wszystko, tylko nie potrzebne informacje.

Samo pytanie brzmi trochę jak problem XY. Jeśli to C++, to nie baw się we wskaźniki tylko skopiuj wektor.

1

Zgadzam się z kq to wygląda na problem XY (czyli źle zadane pytanie).
Najlepiej to:

  1. Wklej kod z którym masz kłopot
  2. opisz co ma robić ten program (z punktu widzenie użytkownika) - albo treść zadania, które rozwiązujesz
  3. wskaż miejsce w którym masz problem.
0
Dominika Łęczycka napisał(a):

Dzień dobry
Rozwiązuję zadanie i potrzebuje się dowiedzieć jak stworzyć kopię wartości przekazywanej przez wskaźnik.
To znaczy (dla jasności)- nie kopię samego wskaźnika, czyli adresu w pamięci komputera, tylko wartości- w typ przypadku całej tablicy wartości, na jaką on wskazuje.

  • chciałam dodać skopiowaną tablicę do stworzonego wcześniej wektora tablic typu int tak, żeby nie zachodziły w niej już żadne zmiany, kiedy będę zmieniać wartość... oryginału od którego powstała kopia tablicy przekazanego do funkcji przez wskaźnik.
    Mam nadzieję, że istnieje w ogóle taki sposób ;-)

*jeśli komuś chętnemu do udzielenia odpowiedzi pomogłoby udostępnienie kodu programu, to proszę napisać- dodam w komentarzu.

Z góry dziękuję za odpowiedź!

Chciałam stworzyć funkcję, która przyjmuje wszystkie permutacje podanej tablicy int, a później poprzez program główny użyć tej funkcji i wypisać na ekranie.

kod:

//generowaie permutacji tablicy int

#include <iostream>
#include <vector>

using namespace std;

void permutacje(int* a, int start, vector<int[]> results, int length);

vector <int[]> permutacje(int a[], int length)
{
    vector <int[]> results;
    permutacje(a, 0, results, length);
    return results;

///Bede zamieniac mejscami liczbe z jej sasiadem, lub z sama soba (w drugim przypadku wyglad tabicy sie nie zmienia).
///Potem komputer ma wykonac zamiane odwrotna i przywrócic poprzedni wyglad tablicy-
/// po to, zeby nastepnie od punktu startowego mógl dokonywac kolejnych zmian.

void permutacje(int a[], int start, vector<int[]> results, int length){

    //kiedy (start) jest wiekszy od dlugosci tablicy a, wtedy zakoncz.
    //wtedy dodaj 'results' do koncowej tablicy permutacji
    ///int length = sizeof(a[])/sizeof(int);
    
    if (start >= length){
        results.insert(*a.clone());//dla otrzymania prawidlowych rezultatów trzeba skopiowac a.
    }else{//(jesli to nie koniec)
//najpierw zrobic zamiane. Trzeba przejsc przez wszystkie przyjete wartosci w tablicy, zeby zamienic je z (ta pierwsza).
//potem z druga, potem z trzecia i z nastepna.
        for (int i=0; i<length; i++){
            swap(a[start], a[i]);//uzywam parametru start i zamieniam go z i.
            permutacje(a, start+1, results, length); ///
            swap(a[start], a[i]); }//zamiana odwrotna
         }
}

int main()
{
    int a[3] = {1, 2, 3};
    int length = sizeof(a)/sizeof(int);
    cout<<permutacje(a, length)<<endl;

    return 0;
}

}
3
Dominika Łęczycka skomentował(a):

jeszcze mam pytanie: czy jeśli spróbuję dodać do zbioru(set) element, który już się tam znajduje, to kompilator pokarze mi błąd, czy program zadziała, ale element się po prostu kolejny raz nie doda?

dokumentacja twoim przyjacielem:

std::set<Key,Compare,Allocator>::insert - cppreference.com

Inserts element(s) into the container, if the container doesn't already contain an element with an equivalent key.

....

Return value

1-2) Returns a pair consisting of an iterator to the inserted element (or to the element that prevented the insertion) and a bool value set to true if the insertion took place.

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