2011-12-25 56 views
5

Similar a esta pregunta Pivot Table in c#, estoy buscando una implementación de una tabla dinámica en C++. Debido a los requisitos del proyecto, la velocidad es bastante crítica y el resto del proyecto de la parte crítica del rendimiento está escrito en C++, por lo que una implementación en C++ o invocable desde C++ sería muy conveniente. ¿Alguien sabe de implementaciones de una tabla dinámica similar a la que se encuentra en Excel u oficina abierta?implementación de tabla dinámica C++

Prefiero no tener que codificar una cosa desde cero, pero si tuviera que hacer esto ¿cómo debería hacerlo? ¿Qué algoritmos y estructuras de datos sería bueno tener en cuenta? Cualquier enlace a un algoritmo sería muy apreciado.

+0

Dado que esta es la primera insignia de tumbleweed que he ganado parece una recompensa en orden ... – shuttle87

+1

OpenOffice es de código abierto y está escrito en parte en C++. ¿Por qué no echas un vistazo a su implementación? – HighCommander4

Respuesta

0

No estoy al tanto de una aplicación existente que se adapte a sus necesidades, por lo que, suponiendo que tuviera que escribir una ...

me gustaría sugerir el uso de SQLite para almacenar sus datos y utilizar SQL para calcular los agregados (Nota: SQL no hará la mediana, sugiero una abstracción en algún momento para permitir tal comportamiento). El beneficio de usar SQLite es que es bastante flexible y extremadamente robusto, además de que le permite aprovechar su arduo trabajo en términos de almacenar y manipular datos. Envolver la interfaz que espera de su tabla dinámica alrededor de este concepto parece ser una buena manera de comenzar, y le ahorrará mucho tiempo.

Podría combinar esto con una arquitectura modelo-vista-controlador para los componentes de la interfaz de usuario, anticipo que funcionaría como un encanto. Soy un usuario muy satisfecho de Qt, por lo que sugiero usar QtableView de Qt en combinación con QStandardItemModel (si puedo salirse con la suya) o QAbstractItemModel (si es necesario). No estoy seguro si querías esta sugerencia, pero está ahí si la quieres :).

Espero que le brinde un punto de partida, cualquier pregunta o adición, no dude en preguntar.

3

Estoy seguro de que no está solicitando la característica completa de la tabla dinámica en Excel. Creo que quiere una tabla simple de estadísticas basada en variables explicativas discretas y estadísticas dadas. Si lo hace, creo que este es el caso de que escribir desde cero podría ser más rápido que mirar otras implementaciones.

Simplemente actualice std :: map (o estructura de datos similar) de la clave que representa la combinación de variables explicativas y el valor de las estadísticas dadas cuando el programa lee cada punto de datos.

Después de terminar con la lectura, es solo cuestión de organizar la tabla de salida con el mapa que podría ser trivial dependiendo de su objetivo.

Creo que la mayoría de los ejemplos de C# en esa pregunta que vinculó hacen este enfoque de todos modos.

0

Creo que la razón por la que su pregunta no recibió mucha atención es que no está claro cuáles son sus datos de entrada, ni qué opciones para la tabla dinámica desea apoyar.

Una tabla dinámica está en su forma básica, corriendo a través de los datos, agregando operaciones en cubos. Por ejemplo, desea ver cuántos artículos ha enviado cada semana desde cada almacén en las últimas semanas:

Debería crear una matriz multidimensional de depósitos (las filas son semanas, las columnas son depósitos) y ejecutar los datos, decidiendo a qué depósito pertenecen esos datos, agregando el monto en el registro que está mirando y pasando al siguiente registro.

Cuestiones relacionadas