2011-12-25 36 views
5

Tương tự như câu hỏi này Pivot Table in c#, tôi đang tìm cách triển khai bảng tổng hợp trong C++. Do tốc độ yêu cầu của dự án là rất quan trọng và phần còn lại của dự án phần quan trọng thực hiện được viết bằng C++ nên việc thực hiện trong C++ hoặc có thể gọi từ C++ sẽ rất mong muốn. Có ai biết về việc triển khai bảng tổng hợp tương tự với bảng tổng hợp trong Excel hay văn phòng mở không?C++ triển khai bảng tổng hợp

Tôi không muốn phải viết mã như vậy từ đầu, nhưng nếu tôi làm điều này thì tôi nên làm thế nào? Thuật toán và cấu trúc dữ liệu nào sẽ tốt để nhận thức? Bất kỳ liên kết đến một thuật toán sẽ được đánh giá rất nhiều.

+0

Thấy đây là huy hiệu tumbleweed đầu tiên mà tôi kiếm được trông giống như tiền thưởng ... – shuttle87

+1

OpenOffice là nguồn mở và được viết một phần bằng C++ - tại sao bạn không xem triển khai của chúng? – HighCommander4

Trả lời

0

Tôi không nhận thức được một thực hiện có mà sẽ phù hợp với nhu cầu của bạn, vì vậy, giả sử bạn đã viết một ...

tôi muốn đề nghị sử dụng SQLite để lưu trữ dữ liệu của bạn và sử dụng SQL để tính uẩn (Lưu ý: SQL sẽ không làm trung bình, tôi đề nghị một trừu tượng ở một số giai đoạn để cho phép hành vi như vậy), Lợi ích của việc sử dụng SQLite là nó khá linh hoạt và cực kỳ mạnh mẽ, cộng với nó cho phép bạn tận dụng lợi thế của công việc khó khăn của họ về lưu trữ và thao tác dữ liệu. Việc gói giao diện bạn mong đợi từ bảng tổng hợp xung quanh khái niệm này có vẻ như là một cách tốt để bắt đầu và tiết kiệm cho bạn khá nhiều thời gian.

Sau đó, bạn có thể kết hợp điều này với kiến ​​trúc bộ điều khiển kiểu mô hình cho các thành phần giao diện người dùng, tôi dự đoán rằng nó sẽ hoạt động như một nét duyên dáng. Tôi là một người sử dụng rất hài lòng của Qt, vì vậy trong vấn đề này tôi muốn đề nghị sử dụng QTtView của Qt kết hợp với QStandardItemModel (nếu tôi có thể nhận được đi với nó) hoặc QAbstractItemModel (nếu tôi phải). Không chắc chắn nếu bạn muốn gợi ý này, nhưng nó có nếu bạn muốn nó :).

Hy vọng cung cấp cho bạn điểm xuất phát, bất kỳ câu hỏi hoặc bổ sung nào, đừng ngần ngại hỏi.

3

Tôi chắc chắn bạn không yêu cầu đầy đủ tính năng của bảng tổng hợp trong Excel. Tôi nghĩ bạn muốn bảng thống kê đơn giản dựa trên các biến giải thích rời rạc và thống kê đã cho. Nếu bạn làm thế, tôi nghĩ đây là trường hợp mà việc viết từ đầu có thể nhanh hơn việc xem xét các triển khai khác.

Chỉ cập nhật std :: map (hoặc cấu trúc dữ liệu tương tự) của khóa biểu diễn kết hợp biến giải thích và giá trị thống kê đã cho khi chương trình đọc từng điểm dữ liệu.

Sau khi thực hiện xong việc đọc, bạn chỉ cần tổ chức bảng đầu ra với bản đồ có thể tầm thường tùy thuộc vào mục tiêu của bạn.

Tôi tin rằng hầu hết các ví dụ C# trong câu hỏi mà bạn đã liên kết đều thực hiện phương pháp này.

0

Tôi nghĩ lý do khiến câu hỏi của bạn không nhận được nhiều sự chú ý là không rõ dữ liệu đầu vào của bạn là gì, cũng như các tùy chọn cho bảng tổng hợp mà bạn muốn hỗ trợ.

Bảng tổng hợp ở dạng cơ bản, chạy qua dữ liệu, tổng hợp các hoạt động thành nhóm. Ví dụ: bạn muốn xem có bao nhiêu mục bạn đã chuyển mỗi tuần từ mỗi nhà kho trong vài tuần qua:

Bạn sẽ tạo một loạt các nhóm đa chiều (hàng là tuần, cột là kho) và chạy qua dữ liệu, quyết định nhóm dữ liệu nào thuộc về, thêm số tiền trong bản ghi mà bạn đang xem và chuyển sang bản ghi tiếp theo.