copy mit vectoren die Pointer speichern
-
Hallo,
ich versuche folgendes:
// In einer for-schleife mit i copy(m_klasse->AccessQuelle().begin(), // Referenz auf Vector m_klasse->AccessQuelle().end(), // Referenz auf Vector m_ziele[i].begin()); // Vector m_ziele wurde vorher mit resize angelegt.In der Quelle sind jeweils Pointer auf Klassen, allerdings enthalten die Vektoren in m_ziele nach dem kopieren stets 0 Elemente. Es werden also keine Pointer kopiert.
Jetzt mach ich das umständlich mit einer weiteren forschleife. Wo ist denn da der Fehler?
-
Hast du für das Ziel genug Speicher reserviert?
-
Sieht jetzt so aus:
// In einer for-schleife mit i m_ziele[i].resize( m_klasse->AccessQuelle().size() ); copy(m_klasse->AccessQuelle().begin(), m_klasse->AccessQuelle().end(), m_ziele[i].begin());In Ziele wird weiterhin nichts kopiert

-
zwar nicht die Fehlerursache, allerdings bietet sich hier
m_ziele[i].assign( m_klasse->AccessQuelle().begin(), m_klasse->AccessQuelle().end() );an
-
kopierenUndKaffeekochen schrieb:
// In einer for-schleife mit i copy(m_klasse->AccessQuelle().begin(), // Referenz auf Vector m_klasse->AccessQuelle().end(), // Referenz auf Vector m_ziele[i].begin()); // Vector m_ziele wurde vorher mit resize angelegt.In der Quelle sind jeweils Pointer auf Klassen, allerdings enthalten die Vektoren in m_ziele nach dem kopieren stets 0 Elemente. Es werden also keine Pointer kopiert.
Wie sieht denn dein m_ziele.resize-Aufruf aus und welchen Zustand hat m_ziele vor diesem Aufruf? Wenn m_ziele ein Vektor aus Vektoren ist und du nur resize auf dem "äußeren" Vektor ohne 2. Parameter aufrufst, dann haben die neuen "inneren" Vektoren die Länge 0.
Wenn der Typ von m_ziele[i] und AccessQuelle() die gleichen sind, müsste auch das hier funktionieren:
m_ziele.clear(); m_ziele.resize(N,m_klasse->AccessQuelle()); // N Kopien des AccessQuelle-VektorsSonst gibt es ja noch vector<>::assign und die Adapter std::inserter und std::back_inserter aus <iterator>.
BTW: Beim nächten Mal einfach mehr Code zeigen, besonders die Typen.
Gruß,
SP