Les pointeurs, c'est LE DÉMON ! (si tu ne me crois pas, passe dans mon bureau déboguer le code de mon projet qui hélas regorge de mauvais usages des pointeurs
).
Partant de là, dès que tu peux faire sans pointeurs, fais sans pointeurs.
Le C++ t'offre pour ça trois choses qui remplacent bien des pointeurs :
1) les références.
Quand l'argument d'une fonction est gros, utilise un passage d'argument par référence (&), pas un passage par pointeur (*). De plus, si la fonction ne modifie par l'argument, utilise une référence constante (const&), ce qui améliore bien des choses en pratiques !
2) les objets.
De part leur nature, la gestion de la mémoire se fait dans les constructeurs et dans le destructeur. Si allouer de la mémoire est nécessaire, il y a des chances pour que tu es des pointeurs dans le code implantant ta classe. En revanche, le programme qui utilise le code ta classe est, lui, sans pointeurs.
3) les structures de données de la STL.
Souvent la solution pour stocker les données à manipuler tout au long du programme, ces structures masquent complétement les pointeurs sous-jacent (cf point 2).
Sinon, n'utilise pas boost. Ça t'apportera plus de soucis que de solutions. À ton niveau (enfin, c'est valable à tout niveau en fait), fais des choses simples. 