Estoy trabajando con 2 bibliotecas. Uno toma y devuelve std::string
s mientras que el otro usa std::vector<unsigned char>
s.std :: move entre std :: string y std :: vector <unsigned char>
Sería bueno si pudiera robar las matrices subyacentes de std::string
y std::vector<unsigned char>
y poder moverlas entre sí sin la excesiva copia.
ATM que usar algo como:
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();
Y a la inversa:
std::string(
reinterpret_cast<const char*>(&vector_value[0]),
vector_value.size());
Sería mucho mejor ser capaz de definir una:
std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);
C++ 11 no permite explícitamente copiar en escritura, ¿no es así? A menos que lo mantengan bajo la ley "en tanto se comporte como si cumpliéramos con las especificaciones". Creo que la optimización de cadenas pequeñas ha sido el camino a seguir por un tiempo. –