Std::string std::array?

Was ist der empfohlene Weg, um zu konvertieren eine Zeichenfolge in ein array? Ich bin auf der Suche nach etwas wie:

template<class T, size_t N, class V>
std::array<T, N> to_array(const V& v)
{
    assert(v.size() == N);
    std::array<T, N> d;
    std::copy(v.begin(), v.end(), d.data());
    return d;
}

Macht C++11 oder-Boost etwas wie dies? Wie sehen andere das? Scheint dumm, mit kopieren/einfügen diese Funktion mich jedes mal wenn ich es in ein Projekt.

  • Erm, steckte es in einen header?
  • Und Sie müssen diese für...?
  • Ich habe eine Karte mit über 1 Millionen 20 (oder 32) byte-Schlüssel, und ich möchte vermeiden die zusätzlichen Zuweisungen und indirections erforderlich, die von std::string
  • std::string ist so effizient, wie std::vector - hast du Profil und sah, dass es ein problem ist?
  • Dies ist über std::array, nicht std::vector.
  • Es sieht einfach nicht, dass ist nützlich, wenn Sie wissen, dass Ihre Daten von 20 oder 32 Byte lang zur compile-Zeit, warum sind Sie vorbei, es durch einen string?
  • Wenn Ihr string-Längen sind keine Feste Größe (unter 32 bytes), die Sie hinzufügen möchten, null, nachdem das Letzte Zeichen im array, also d[v. size()] = 0;
  • d[v.size()] ist eine out-of-bounds Zugriff. Die strings haben, die genaue Größe, es gibt eine Behauptung zu dokumentieren, dass.
  • Datenbank/Benutzer-input, so habe ich eine Kopie in ein array zu einem bestimmten Zeitpunkt.
  • Nein, es ist nicht. Er sagte: if (v. size() < d....size()) d[v. size] = 0

InformationsquelleAutor XTF | 2012-04-17
Schreibe einen Kommentar