Le passage d'un std::array de taille inconnue à une fonction

En C++11, comment pourrais-je aller sur l'écriture d'une fonction (ou méthode) qui prend un std::array de type connu, mais inconnue de taille?

//made up example
void mulArray(std::array<int, ?>& arr, const int multiplier) {
    for(auto& e : arr) {
        e *= multiplier;
    }
}

//lets imagine these being full of numbers
std::array<int, 17> arr1;
std::array<int, 6>  arr2;
std::array<int, 95> arr3;

mulArray(arr1, 3);
mulArray(arr2, 5);
mulArray(arr3, 2);

Au cours de ma recherche je n'ai trouvé que des suggestions pour l'utilisation des modèles, mais ceux qui semble désordonné (définitions de méthode dans l'en-tête) et excessif pour ce que je suis en train d'accomplir.

Est-il un moyen simple pour faire ce travail, comme on le ferait avec du C-style des tableaux?

  • Les tableaux ont pas de limites de la vérification ou de savoir de quelle taille ils sont. Par conséquent, vous devez mettre dans quelque chose, ou d'envisager l'utilisation de std::vector.
  • Si des modèles semble désordonnée et excessive, vous devez obtenir plus de ce sentiment. Ils sont monnaie courante en C++.
  • Aucune raison de ne pas utiliser std::vector comme @TravisPessetto recommande?
  • Compris. Si ce une limitation de leur nature, je vais devoir l'accepter. La raison que j'ai pensé en évitant les std::vector (qui fonctionne très bien pour moi), c'est qu'il est alloué sur le tas. Depuis ces tableaux sera minuscule et boucle à travers à chaque itération du programme, j'ai pensé qu'un std::array pourrait effectuer un peu mieux. Je pense que je vais utiliser un style C tableau puis, mon programme n'est pas complexe.
  • Votre façon de penser à propos de la performance est tout à fait faux. N'essayez pas d'effectuer des micro-optimisations avant même d'avoir un programme fonctionnel. Et après vous avez un programme, n'essayez pas de deviner sur ce que doit être optimisée, au lieu de laisser un profileur de vous dire dans quelle partie du programme doit être optimisé.
InformationsquelleAutor Adrian | 2013-06-17