2013-08-08 12 views
6

ho provato copiare il contenuto di un vettore a un QVector utilizzando il seguentecopia di uno std :: vector a un qvector

std::copy(source.begin(),source.end(),dest.begin()); 

Tuttavia la destinazione QVector è ancora vuota.

Qualche suggerimento?

+1

Utilizzare ['QVector :: fromStdVector'] (http://qt-project.org/doc/qt-4.8/qvector.html#fromStdVector) – Praetorian

risposta

12

un'occhiata a:

std::vector<T> QVector::toStdVector() const 

QVector<T> QVector::fromStdVector (const std::vector<T> & vector) [static] 

From docs

+0

provato. come 'MyQvector.fromStdVector (MyStedVector);' ancora qvector è vuoto – Rajeshwar

+1

@Rajeshwar: perché è un metodo statico, prova: MyQvector = QVector :: fromStdVector (MyStedVector); – user1837009

+0

Questo l'ha fatto. Grazie – Rajeshwar

3

Se si sta creando una nuova QVector con il contenuto di una std::vector è possibile utilizzare il seguente codice di esempio:

std::vector<T> stdVec; 
    QVector<T> qVec = QVector<T>::fromStdVector(stdVec); 
0

Come le altre risposte menzionate, è necessario utilizzare il seguente metodo per convertire un QVector in un std::vector:

std::vector<T> QVector::toStdVector() const 

E il seguente metodo statico per convertire un std::vector ad un QVector:

QVector<T> QVector::fromStdVector(const std::vector<T> & vector) 

Ecco un esempio di come utilizzare QVector::fromStdVector (tratto da here):

std::vector<double> stdvector; 
vector.push_back(1.2); 
vector.push_back(0.5); 
vector.push_back(3.14); 

QVector<double> vector = QVector<double>::fromStdVector(stdvector); 

Non dimenticare di specificare il tipo dopo il secondo QVector (dovrebbe essere QVector<double>::fromStdVector(stdvector), non QVector::fromStdVector(stdvector)). In caso contrario, si otterrà un fastidioso errore del compilatore.

Problemi correlati