std::move zwischen std::string und std::vector<unsigned char>

Arbeite ich mit 2 Bibliotheken. Man nimmt und gibt zurück std::strings, während die andere verwendet std::vector<unsigned char>s.

Wäre es gut, wenn ich könnte stehlen die zugrunde liegenden arrays von std::string und std::vector<unsigned char> und in der Lage sein, um Sie zu bewegen, in jeden anderen ohne übermäßige kopieren.

ATM verwende ich etwas wie:

const unsigned char* raw_memory =
    reinterpret_cast<const unsigned char*>(string_value.c_str()),
std::vector<unsigned char>(raw_memory, raw_memory + string_value.size();

Ist und die andere Art:

std::string(
    reinterpret_cast<const char*>(&vector_value[0]),
    vector_value.size());

Es wäre weit besser in der Lage sein zu definieren:

std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);

InformationsquelleAutor der Frage genjix | 2012-05-04

Schreibe einen Kommentar