как преобразовать матрицу в dlib в std :: vector

У меня есть вектор colume, определенный в dlib. Как я могу преобразовать его в std :: vector?

typedef dlib::matrix<double,0,1> column_vector;
column_vector starting_point(4);
starting_point = 1,2,3,4;
std::vector x = ??

Спасибо

Ответы на вопрос(2)

Это будет способ, которым вы обычно итерируете по матрице (не имеет значения, если матрица имеет только 1 столбец):

// 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
    }   
}

Итак, почему бы вам не выполнить итерацию по вашему вектору столбца и ввести каждое значение в новыйstd::vector? Вот полный пример:

#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;
    }
}
Решение Вопроса

Есть много способов. Вы можете скопировать его через цикл for. Или используйте конструктор std :: vector, который принимает итераторы:std::vector<double> x(starting_point.begin(), starting_point.end()).

 Davis King04 авг. 2016 г., 14:46
Ой, верно.
 colddie04 авг. 2016 г., 14:45
Благодарю. Но не должно ли это быть std :: vector <Type> x (начальная_точка.begin (), начальная_точка.end ())?

Ваш ответ на вопрос