Đây có thể là một câu hỏi đơn giản đối với một số bạn. Nhưng tôi đã tự hỏi nếu một std::string
là một container. Theo vùng chứa, tôi có nghĩa là các vùng chứa như ví dụ std::vector
, std::list
và std::deque
.C++ Là một std :: string a container?
Vì std::basic_string<>
chấp nhận các loại khác so với các ký tự không tách rời, nhưng cũng đang được tối ưu hóa bằng cách làm việc với các mảng ký tự. Nó không phải là thực sự rõ ràng với tôi trong đó thể loại nó rơi.
này sẽ biên dịch:
#include <string>
#include <iostream>
int main() {
std::basic_string<int> int_str;
int_str.push_back(14);
return 0;
}
Nhưng bằng cách thêm dòng này:
std::cout << int_str << std::endl;
Nó sẽ không. Vì vậy, bởi những sự kiện này tôi có thể kết luận rằng một std :: basic_string không có ý định làm việc với các loại khác so với ký tự.
Đây có thể là một câu hỏi lạ đối với bạn. Lý do tôi cần biết điều này là bởi vì tôi đang làm việc trên một khuôn khổ và tôi vẫn không thể xác định trong đó một loại "chuỗi" sẽ giảm.
Nói đúng ra, nó không phải là một phần của thư viện vùng chứa tiêu chuẩn. Nhưng mà thể loại để đưa nó vào phụ thuộc vào những gì bạn muốn làm với nó: theo nhiều cách, một chuỗi trông rất giống một container. – juanchopanza
Nó không phải là chung chung, đủ để được một thùng chứa thích hợp. Bạn không thể tạo chuỗi từ 'struct X' hoặc' float'. –
Tiêu chuẩn có khái niệm 'Container'. Đó là về định nghĩa tốt nhất mà chúng tôi có thể sử dụng cho câu hỏi này. – BoBTFish