Một phần của ứng dụng của tôi liên quan đến việc hiển thị các dạng sóng âm thanh. Người dùng sẽ có thể phóng to/thu nhỏ dạng sóng. Bắt đầu ở chế độ thu nhỏ hoàn toàn, tôi chỉ muốn lấy mẫu âm thanh ở các nội dung cần thiết để vẽ dạng sóng ở độ phân giải đã cho. Sau đó, khi họ phóng to, hãy định lại mẫu không đồng bộ "các điểm bị thiếu" và cung cấp dạng sóng rõ ràng hơn. (Hãy suy nghĩ về Google Maps.) Tôi không chắc cấu trúc dữ liệu tốt nhất để sử dụng trong thế giới Qt. Lý tưởng nhất, tôi muốn lưu trữ các mẫu dữ liệu được sắp xếp theo thời gian, nhưng với khả năng điền vào các điểm khi cần thiết.Lớp container Qt nào để sử dụng cho một danh sách được sắp xếp?
Vì vậy, ví dụ, các điểm dữ liệu có thể ban đầu trông giống như:
data[0 ms] = 10
data[10 ms] = 32
data[20 ms] = 21
...
Nhưng khi họ phóng to, tôi sẽ nhận được nhiều điểm hơn khi cần thiết, có lẽ:
data[0 ms] = 10
data[2 ms] = 11
data[4 ms] = 18
data[6 ms] = 30
data[10 ms] = 32
data[20 ms] = 21
...
Lưu ý rằng giá trị trong ngoặc là giá trị tra cứu (mili giây), không phải chỉ mục mảng.
Tôi có thể truy vấn hiệu quả phạm vi ("tất cả các điểm trong khoảng 10 đến 30 mili giây") và chèn điểm mới một cách hiệu quả.
Trong. Net Tôi có thể đã sử dụng SortedList<int, int>
. Điều gì sẽ là lớp tốt nhất để sử dụng trong Qt? Hoặc tôi nên sử dụng một container STL?
Khi lặp qua một QHash, các mục được tùy ý yêu cầu. Với QMap, các mục luôn được sắp xếp ** theo khóa **. – Yash