J'ai une classe contenant un tableau de style c géré avec unique_ptr. Je veux fournir un constructeur:Définir le membre de la classe unique_ptr <T[]> tableau sans copier
class A {
unique_ptr<T[]> p;
public:
A(int d, X x) : p(new T[d]) {
//Transfer from x to p without copying
}
}
pour que je puisse construire mon objet avec quelque chose comme:
int main(..) {
A a{n,{expr1,expr2,..}};
}
où {expr1, expr2, ..} contient les valeurs (évaluées lors de l'exécution) pour l'initialisation. Puisque cette liste est temporaire, il me semble que c'est un gaspillage de ressources pour la construire, copier ses valeurs dans l'objet réel et le jeter. Je pense qu'avec move semantincs, rvalues et toutes les bonnes fonctionnalités de C++ 11 il devrait y avoir une solution pour cette tâche simple, mais je ne l'ai pas trouvée (je suis assez nouveau en C++).
Je voudrais coller avec les tableaux de style c et ne pas déplacer vers std :: vectors. Y a-t-il une solution?
Que voulez-vous dire par "sans copier"? Vous voulez que l'allocation de tas soit initialisée avec les membres de données? – Justin
* "Je voudrais coller avec les tableaux de style c et ne pas déplacer vers std :: vectors" * [sic] pourquoi ne voudriez-vous pas utiliser les fonctionnalités fournies par la bibliothèque du langage? Ne pas le faire s'appelle réinventer la roue. –
@ nnn Legacy code, pour n'en nommer que quelques-uns. –