У меня огромный набор данных. Я хочу использовать массив для хранения этих данных. Более подробно,

В моем массиве я хочу использовать 3 столбца, например Number number_of_points point_numbers. Для этого я могу создать массив типа mypointstore[][] (например, mypointstore[20][3]). Но моя проблема в том, что я хочу хранить номера точек в столбце 3, например, 20, 1, 32, 9, 200, 12 и т. д. (mypointstore[0][0]= 1, mypointstore[0][1]= 6 и mypointstore[0][2]={ 20, 1, 32, 9, 200, 12 }). Я не знаю, можно ли использовать массив для этой структуры? Если это так, пожалуйста, помогите мне решить эту проблему.

Я пытался использовать карту типа map<int,int,vector<int>> mypointstore;, но не знаю, как вставить данные в эту карту; Некоторые мои коды здесь

map<int,int, vector<int>> mypointstore;
size=20;
For (int i=0; i<= size;i++){
Int det=0;
    For (int j=0; j<= points.size();j++){//points is a one of array with my points
        If (points.at(j)>Z1 && points.at(j) <=Z2){
    //Here i want to store i , det and poiznts.at(j) like i in 1st colum, det in 2nd and
     //pointnumber in 3rd colum) in each step of the loop it take a point                                                                                                                                                                                                 
     //number   //which satisfied the if condition so it should be include into my    
     // vector of map   
det++;
}
}
    // at here i want to change total det value into 2nd element of my map so it like (0)(6)( 20, 1, 32, 9, 200, 12)
}

Аналогичная процедура для следующего шага, поэтому, наконец, это должно быть

(0)(6)( 20, 1, 32, 9, 200, 12)
(1)(10)( 20, 1, 32, 9, 200, 12, 233, 80, 12, 90)
(2)(3)( 3, 15, 32)
c++
0
nah 25 Мар 2011 в 20:20
Я немного поправил ваш пост, но не ваш код. У вас есть несколько ошибок. For не for, Int не int, If не if, >> не > >, очень плохо отступ, слишком много аргументов шаблона для std::map (vector<int> не является компаратором).
 – 
Lightness Races in Orbit
6 Апр 2011 в 18:04
Нет, я не знаю, как размещать коды здесь
 – 
nah
8 Апр 2011 в 16:00
Справа от поля, где вы написали свой вопрос, есть целая куча советов, информации и ссылок на другие ресурсы. Проблемы, которые я описываю, касаются самого кода.
 – 
Lightness Races in Orbit
8 Апр 2011 в 16:17

1 ответ

Мне кажется, что вам, вероятно, нужен вектор структур, что-то вроде:

struct point_data { 
    int number;
    std::vector<int> point_numbers;
};

std::vector<point_data> points;

Я поставил только два «столбца», потому что (по крайней мере, насколько я понимаю) ваш number_of_points, вероятно, point_numbers.size().

Если вы собираетесь использовать number для поиска остальных данных, то ваша идея использовать map имеет смысл:

std::map<int, std:vector<int> > points;

Вы можете использовать multimap<int, int> вместо map<int, vector<int> >, но я обычно нахожу последнее более понятным.

2
Jerry Coffin 25 Мар 2011 в 20:25
На самом деле number_of_points не является point_number.size(), извините, я пропустил 1 строку после 2-го цикла, то есть значения условий Z1 и Z2 будут изменены.
 – 
nah
25 Мар 2011 в 20:31
@nah: возможно, (неявное) предложение @dark_charlie правильное, и вам следует отредактировать вопрос, чтобы у нас было больше шансов выяснить, чего вы действительно хотите.
 – 
Jerry Coffin
25 Мар 2011 в 20:35
Не существует такого понятия, как «вектор структур». Вектор содержит объекты.
 – 
Lightness Races in Orbit
8 Апр 2011 в 16:17