Использование initializer_list
может выглядеть следующим образом;
Первый #include <initializer_list>
std::vector<std::initializer_list<float>> vec{ {1,2,3} };
vec.push_back({4,5,6}); // add a row
Доступ к каждому элементу может быть сделано, как;
for (auto list: vec){
for(auto element: list){
std::cout<< element << " "; // access each element
}
std::cout<<"\n";
}
Получение индивидуального элемента с (x, y) координатами;
// access first row (y coord = 0), second element (x coord = 1, also the column)
std::cout<< "vec[0].begin() + 1 = (addr:" << (vec[0].begin() + 1)
<< " - value: " << *(vec[0].begin() + 1) << ')';
Все это вместе выдаст;
1 2 3
4 5 6
vec[0].begin() + 1 = (addr:0x40a0d4 - value: 2)
уборщик способ может быть сделано, как это;
// using a variable type of initializer_list
std::initializer_list<float> row = {1,2,3};
std::vector<std::initializer_list<float>> vec{ row };
row = {4,5,6}; // change list
vec.push_back(row); // add rows
vec.push_back({7,8,9});
for (auto list: vec){
for(auto value: list){
std::cout<< value <<" ";
}
std::cout<<"\n";
}
//access without looping
const float *element = vec[0].begin();
// pointer to first row, first element (value: 1)
element+=3;
// point to second row, first element (value: 4)
std::cout<<"\nElement("<<*element<<")\n";
// access the same element with x,y coords = (0,1)
int x = 0, y = 1;
std::cout<<"\ncoord(0,1) = "<< *(vec[y].begin() + x) << "\n";
Будет выдавать;
1 2 3
4 5 6
7 8 9
Element(4)
coord(0,1) = 4
Проблемы я могу думать с этим (при условии, что это какой-либо ценности) является то, что;
1) данные инициализируются как константа floats
, и насколько я знаю, вы не можете их изменить.
и
2) если вы изменили list
равным {0,1,2,3,4,5}
, теперь у вас будет более 3-х столбцов.
Вектор векторов? Вектор, содержащий 'struct'? Или вы хотите, чтобы вы использовали только один вектор и никаких других структур данных или контейнеров? –
@Joachim. Да вектор вектор. Да, я хочу использовать только вектор. – deepak09027
Итак, используйте вектор векторов (хотя решение массива кажется мне лучше). У вас есть особая проблема с этим? – juanchopanza