Tôi đang làm việc với 2 thư viện. Một người nhận và trả về std::string
trong khi người kia sử dụng std::vector<unsigned char>
s.std :: di chuyển giữa std :: string và std :: vector <unsigned char>
Sẽ tốt nếu tôi có thể lấy cắp các mảng cơ bản từ std::string
và std::vector<unsigned char>
và có thể di chuyển chúng vào nhau mà không cần sao chép quá mức.
ATM tôi sử dụng một cái gì đó như:
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();
Và cách khác:
std::string(
reinterpret_cast<const char*>(&vector_value[0]),
vector_value.size());
Nó muốn được tốt hơn để có thể xác định một:
std::string move_into(std::vector<unsigned char>&&);
std::vector<unsigned char> move_into(std::string&&);
C++ 11 rõ ràng không cho phép sao chép trên ghi, phải không? Trừ khi họ giữ nó dưới "miễn là nó hoạt động như thể chúng tôi tuân thủ luật" cụ thể ". Tôi nghĩ rằng tối ưu hóa chuỗi nhỏ đã là con đường để đi một lúc. –