RE:Arreglo con cualquier tipo de datos
C++ permite crear templates , lo que le puede ser de gran ayuda, ademas ya tienen una coleccion de templates para arreglos, matrices, listas, colas, bitmaps genericos, el problema del void es que debes estar haciendo cast cada rato, mientras que los templates podes definir un arreglo (o matrices, listas, colas, bitmaps ) y mandas por parametro el tipo(int, clases,estructuras,etc), ya tiene implemetado las funciones de buscar , insertar,borrar etc, busca acerca de STL Standard Template Library, esto es base en el core de los IDE de programacion como MS visual c++ , builder , linux,
las declaraciones y funciones son standard (hasta donde he visto) por lo que te da portabilidad entre plataformas y/o marcas.
Este conjunto de templates son bien disenadas, dificilmente implemetaras algo mas eficiente , al procipio deberas compreder el concepto asi como funcionan los iteradores , despues de eso te sera la vida mas facil ,intentalo te lo recomeindo