2013-08-08 23 views
6

Próbowałem zawartości kopii jednego wektora do QVector stosując następującykopiowania std :: vector do qvector

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

Jednak docelowy QVector nadal jest pusta.

Wszelkie sugestie?

+1

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

Odpowiedz

12

Spójrz:

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

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

From docs

+0

próbował tego. jako 'MyQvector.fromStdVector (MyStedVector);' nadal qvector jest pusty – Rajeshwar

+1

@Rajeshwar: ponieważ jest to metoda statyczna, spróbuj: MyQvector = QVector :: fromStdVector (MyStedVector); – user1837009

+0

To się udało. Dzięki – Rajeshwar

3

Jeśli tworzysz nową QVector z zawartości std::vector można wykorzystać następujący kod jako przykład:

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

As inne odpowiedzi wymienione, należy użyć następującej metody, aby przekonwertować QVector na std::vector:

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

I następująca metoda statyczna konwertować std::vector Do QVector:

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

Oto przykład jak używać QVector::fromStdVector (zaczerpnięte z 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); 

Nie zapomnij podać typu po drugim QVector (powinno być QVector<double>::fromStdVector(stdvector), a nie QVector::fromStdVector(stdvector)). W przeciwnym razie wystąpi uciążliwy błąd kompilatora.

Powiązane problemy