An den internen Array-Buffer von std::vector o.Ä. kommen?



  • Hallo,

    ich möchte an den internen Datenbuffer von std::vector oder einem ähnlichen Container der STL oder Boost kommen, wie es z.B. auch bei std::string mit c_str() möglich ist.

    Ich muss einer Funktion als Funktionsparameter einen Zeiger auf ein ganz normales Array geben, allerdings möchte ich vorher mit Containern arbeiten. Bietet da die STL oder Boost einen entsprechenden Container an?

    Danke!



  • vector<int> vec;
    //füllen
    ...
    int* iarray = &vec[0];
    


  • Es ist bei std::vector sichergestellt, das der Speicherblock an einem Stück ist. D.h. ist es möglich wie Ryuzaki schon gesagt hat, per Zeiger aufs erste Element des Bereiches den du haben willst, auf den Bereich zuzugreifen:

    int foo(int* array, const std::size_t size)
    {
        for (std::size_t i(0); i < size; ++i)
            std::cout << array[i] << std::endl;
    }
    
    int main()
    {
        std::vector<int> vec(6, 4000); // dein vector halt ...
    
        foo(&vec[0], vec.size()); // alle 6 items
        foo(&vec[2], 2); // 3. bis 5 item
    }
    

    ...



  • Aah okay, klingt logisch... danke Euch beiden!


Anmelden zum Antworten