delete von dyn. Array



  • Ethon schrieb:

    Du löscht nicht selbst sondern verwendest unique_ptr. vector ist je nach Einsatzzweck einfach nur unnötig.

    #include <memory>
    
    int main()
    {
    	using namespace std;
    
    	unique_ptr<unique_ptr<int[]>[]> population(new unique_ptr<int[]>[5]);
    	for(int i = 0; i < 5; ++i)
            population[i].reset(new int[7]);
    }
    

    Ich glaube, was perverseres hab ich noch nie gesehen.



  • Kellerautomat schrieb:

    Ethon schrieb:

    Du löscht nicht selbst sondern verwendest unique_ptr. vector ist je nach Einsatzzweck einfach nur unnötig.

    #include <memory>
    
    int main()
    {
    	using namespace std;
    
    	unique_ptr<unique_ptr<int[]>[]> population(new unique_ptr<int[]>[5]);
    	for(int i = 0; i < 5; ++i)
            population[i].reset(new int[7]);
    }
    

    Ich glaube, was perverseres hab ich noch nie gesehen.

    Dann hast du hier etwas Perverseres:

    #include <vector>
    
    int main()
    {
    	using namespace std;
    
    	vector<vector<int>> population(5);
    	for(int i = 0; i < 5; ++i)
                population[i].resize(7);
    }
    

    Edit: Okay, die Schleife kann beim vector weg:

    #include <vector>
    
    int main()
    {
    	using namespace std;
    
    	vector<vector<int>> population(5, vector<int>(7));
    }
    

    Trotzdem ist vector nicht für Arrays mit fixer größe da.



  • Beides gleich scheisse. Da der TE offensichtlich ein 2D Array will, waere Indizes umrechnen in einem vector/unique_ptr<T[]> besser. Welches davon kommt auf den Anwendungsfall an.



  • Ethon schrieb:

    Trotzdem ist vector nicht für Arrays mit fixer größe da.

    Stimmt, dafür gibt es std::array...



  • Kellerautomat schrieb:

    Beides gleich scheisse. Da der TE offensichtlich ein 2D Array will, waere Indizes umrechnen in einem vector/unique_ptr<T[]> besser. Welches davon kommt auf den Anwendungsfall an.

    Überlest ihr alle meine Beiträge oder was?



  • Nathan schrieb:

    Kellerautomat schrieb:

    Beides gleich scheisse. Da der TE offensichtlich ein 2D Array will, waere Indizes umrechnen in einem vector/unique_ptr<T[]> besser. Welches davon kommt auf den Anwendungsfall an.

    Überlest ihr alle meine Beiträge oder was?

    noch nicht genug aufmerksamkeit was 🙄



  • adhs schrieb:

    Nathan schrieb:

    Kellerautomat schrieb:

    Beides gleich scheisse. Da der TE offensichtlich ein 2D Array will, waere Indizes umrechnen in einem vector/unique_ptr<T[]> besser. Welches davon kommt auf den Anwendungsfall an.

    Überlest ihr alle meine Beiträge oder was?

    noch nicht genug aufmerksamkeit was 🙄

    Ich mein ja nur: Die sagen genau das, was ich auch schon gesagt hatte...


  • Mod

    Nathan schrieb:

    Ich mein ja nur: Die sagen genau das, was ich auch schon gesagt hatte...

    Reagiere doch nicht auf solche Trolle.

    asc schrieb:

    Stimmt, dafür gibt es std::array...

    Wie jetzt? So?

    std::vector<std::array<int, 4000>> vec(10000);
    


  • Hallo, ich bins nochmal.
    Gibt es für diese Indexkalkulation einen Fachbegriff, den man in der Literatur findet? Bei Indexkalkulation ist es ein bisschen mau...
    Darf auch gerne ein englischer Begriff sein.
    Danke



  • Indexierung, Indizierung, Indexoperator - in der Richtung würd ich mal suchen.

    Was brauchst du denn? Bzw was willst wissen?



  • Ich nutze die Indexkalkulation in einer Arbeit und wollte jetzt einen wissenschaftlichen Artikel aus dem ich ein bisschen was zu Indexkalkulation zitieren kann.



  • Da das absolute Basics der Mathematik sind wirst du dazu kaum etwas finden.



  • da, kannst ziteren:

    #include <cassert>
    #include <cstddef>
    #include <iostream>
    
    template<typename T, std::size_t N>
    constexpr std::size_t sizeof_array(T(&)[N]){return N;}
    
    int main()
    {
    	unsigned data[]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    	std::size_t const x_dim{ 3 };
    
    	assert(sizeof_array(data) % x_dim == 0);
    
    	for (std::size_t y = 0; y < sizeof_array(data) / x_dim; ++y)
    		for (std::size_t x = 0; x < x_dim; ++x)	
    			std::cout << "data[" << y << "][" << x << "] = " << data[y * x_dim + x] << '\n';
    }
    

Anmelden zum Antworten