copying a std::vector to a qvector

后端 未结 4 1213
囚心锁ツ
囚心锁ツ 2021-02-20 04:40

I tried copy content of one vector to a QVector using the following

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

However

相关标签:
4条回答
  • 2021-02-20 05:18

    As the other answers mentioned, you should use the following method to convert a QVector to a std::vector:

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

    And the following static method to convert a std::vector to a QVector:

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

    Here is an example of how to use QVector::fromStdVector (taken from here):

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

    Don't forget to specify the type after the second QVector (it should be QVector<double>::fromStdVector(stdvector), not QVector::fromStdVector(stdvector)). Not doing so will give you an annoying compiler error.

    0 讨论(0)
  • 2021-02-20 05:19

    If you are creating a new QVector with the contents of a std::vector you can use the following code as an example:

       std::vector<T> stdVec;
       QVector<T> qVec = QVector<T>::fromStdVector(stdVec);
    
    0 讨论(0)
  • 2021-02-20 05:21

    Look at:

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

    From docs

    0 讨论(0)
  • 2021-02-20 05:37

    'fromStdVector' has been explicitly marked deprecated recently. Use following code:

    std::vector<...> stdVec;
    
    // ...       
    
    QVector<...> qVec = QVector<...>(stdVec.begin(), stdVec.end());
    
    0 讨论(0)
提交回复
热议问题