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?
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.
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.