У меня есть 2D-вектор vector<vector<int> > det;
, и я хочу присвоить последнее значение или последнее значение push_back
d другому другому вектору 2D v.
Это то, что я попытался v = *(det.rbegin());
, но он показывает ошибку. Каков правильный способ сделать это? сообщение
ошибки: преобразование из «станд :: вектор» к нескалярный типа «станд :: вектор>» просилОтмена итератора на двумерный вектор и присвоение его значения другому двумерному вектору
ответ
Последняя запись в 2D-массив не является 2D массив, т.е. типа вектора < < вектора int>>, но типа vector < int>.
Как таковой, он не может быть назначен на другую переменную типа
вектор < вектор < Int>>
Это прекрасно работает:
#include<iostream>
#include<vector>
int main(){
std::vector<std::vector<int> > det, det2;
std::vector<int> vector1, vector2, vector3;
vector1.push_back(3);
vector1.push_back(4);
vector1.push_back(5);
vector2.push_back(13);
vector2.push_back(14);
vector2.push_back(15);
vector3.push_back(113);
vector3.push_back(114);
vector3.push_back(115);
std::vector<int> member_of_2darray;
det.push_back(vector1);
det.push_back(vector2);
det.push_back(vector3);
det2.push_back(det.back());
std::cout<<det2[0][2]<<std::endl; // returns 115
//last:element
std::cout<<det.back().back()<<std::endl;
}
редактировать: если вы deperately хотите использовать итераторы : приведен рабочий пример:
#include<iostream>
#include<vector>
int main(){
std::vector<std::vector<int> > det, det2;
std::vector<int> vector1, vector2, vector3;
std::vector<std::vector<int> >::iterator it;
vector1.push_back(3);
vector1.push_back(4);
vector1.push_back(5);
vector2.push_back(13);
vector2.push_back(14);
vector2.push_back(15);
vector3.push_back(113);
vector3.push_back(114);
vector3.push_back(115);
std::vector<int> member_of_2darray;
det.push_back(vector1);
det.push_back(vector2);
det.push_back(vector3);
it = det.end();
det2.push_back(*(it-1));
std::cout<<det2[0][2]<<std::endl; //output: 115
}
Я хочу извлечь значение последнего элемента det, но размер det неизвестен. – user6291111
Последний элемент det.back(). Или, с итератором, последний элемент - * (it - 1). –
Проблема была с возвратным типом * (det.rbegin()), который является вектором
Рассмотрите прочитав сообщение об ошибке. – user2079303
@ user2079303 Я уже прочитал сообщение об ошибке, но что означает 'std :: vector>'? – user6291111
Предоставьте весь код, пожалуйста. –