Вы можете использовать newmat11 для достижения описанного поведения, подобного фитону: http://www.robertnz.net/nm11.htm
std::vector<int > dest{ 1,2,3,4,5 };
std::vector<int > src{ 6,7,8,9,10 };
std::vector<int> third{ 11,12,13,14,15 };
Matrix x(5, 3);
x.column(1) << dest.data();
x.column(2) << src.data();
x.column(3) << third.data();
Matrix sub = x.submatrix(1, 5, 1, 2);
std::cout << sub << std::endl;
Создает следующий вывод
1.0 6.0
2.0 7.0
3.0 8.0
4.0 9.0
5.0 10.0
Матрица сохраняет свои значения последовательно, поэтому вы можетеполучите ваш единственный вектор, подобный этому:
std::vector<double> merge(sub.Store(), sub.Store() + sub.size());
for (auto& digit : merge) std::cout << digit << "\t";
, который выдает следующий результат: 1 6 2 7 3 8 4 9 5 10
Самое сложное, что нужно сделать, это:
- Загрузка всех необходимых файлов .h и .cpp с домашней страницы
- Создание нового проекта, состоящего из файлов newmat11
- Сборка в .lib
- Добавитьссылка, включите каталог и .lib путь к вашему основному проекту