Konvertieren von std :: array in std :: vector

8

Im folgenden Code kann die Größe des Arguments der Funktion (foo) ( std::vector ) alles sein, um die Funktion zu einem generischen zu machen. Manchmal ist der Größencontainer jedoch bekannt, sodass std :: array verwendet werden kann. Das Problem besteht darin, std::array in std::vector zu konvertieren. Was ist der beste Weg, um dieses Problem zu lösen? Ist es besser, in diesem Fall immer std::vector zu verwenden?

%Vor%     
Shibli 22.07.2014, 17:47
quelle

2 Antworten

16

Wenn Sie array übergeben, scheint foo die Größe des Containers nicht zu ändern (es scheint jedoch die Elemente zu ändern, da vec nicht-const übergeben wird). Es muss daher nichts über den zugrunde liegenden Container wissen, außer wie auf Elemente zuzugreifen.

Dann können Sie ein Paar von Iteratoren übergeben (und den Iterator dazu veranlassen, ein Template-Argument einzugeben), wie viele STL-Algorithmen.

    
Alexander Gessler 22.07.2014 17:49
quelle
0

Die Funktion akzeptiert einen Vektor als Referenz. Daher ist es nicht sinnvoll, ein Objekt vom Typ std :: array an die Funktion zu übergeben. Es könnte Sinn ergeben, wenn der Parameter der Funktion als konstante Referenz auf einen Vektor definiert wäre.

    
Vlad from Moscow 22.07.2014 17:50
quelle

Tags und Links