2016-08-04 3 views

Antwort

3

Es gibt viele Möglichkeiten. Sie könnten es über eine for-Schleife kopieren. Oder verwenden Sie den Konstruktor std :: vector, der Iteratoren verwendet: std::vector<double> x(starting_point.begin(), starting_point.end()).

+0

Danke. Aber sollte es nicht std :: vector x (startender_point.begin(), startender_point.end())? – colddie

+0

Hoppla, das stimmt. –

0

Das wäre so, wie Sie normalerweise über die Matrix iterieren (keine Rolle spielt, wenn die Matrix nur 1 Spalte):

// loop over all the rows 
for (unsigned int r = 0; r < starting_point.nr(); r += 1) { 
    // loop over all the columns 
    for (unsigned int c = 0; c < starting_point.nc(); c += 1) { 
     // do something here 
    } 
} 

Also, warum Sie über Ihren Spaltenvektor nicht iterieren und einführen jeder Wert in den neuen std::vector? Hier ist ein vollständiges Beispiel:

#include <iostream> 
#include <dlib/matrix.h> 

typedef dlib::matrix<double,0,1> column_vector; 

int main() { 
    column_vector starting_point(4); 
    starting_point = 1,2,3,4; 

    std::vector<double> x; 

    // loop over the column vector 
    for (unsigned int r = 0; r < starting_point.nr(); r += 1) { 
     x.push_back(starting_point(r,0)); 
    } 

    for (std::vector<double>::iterator it = x.begin(); it != x.end(); it += 1) { 
     std::cout << *it << std::endl; 
    } 
} 
Verwandte Themen