В моей программе у меня есть массив «vector< vector<double> > convos
» с 3 строками и произвольным числом столбцов Nconv
. Каждый столбец представляет собой возможную беседу между двумя людьми из группы с размером N
, а вторая & 3-я ячейка в каждом столбце содержит номер, обозначающий конкретного человека.Манипулирование векторным массивом с помощью функции void C++
Итак, я написал небольшой раздел кода цикла через этот массив и заполнил каждый столбец уникальной парой целых чисел, например.
convos [I] [2] = 1 2 3 2 3
convos [я] [1] = 0 0 0 1 1 .... и так далее.
Код, который я написал для работы, но слишком грязный, чтобы оставить его в моем int main()
, и, вероятно, хорошей практикой является использование внешних функций.
Моя проблема заключается в том, что когда я вызываю функцию insertpairs
в моем основном коде, ничего не происходит ... Может ли кто-нибудь указать что-то очевидное, что я здесь отсутствует?
#include <iostream>
#include <vector>
using namespace std;
using std::vector;
void insertpairs(vector<vector<double> > convos, int Nconv, int N)
{
int a(0), b, c(0);
while (c < Nconv){
b = a+1;
while (b < N){
convos[c][1] = a;
convos[c][2] = b;
b++;
c++;
}
a++;
}
}
int main(){
int N(4), Nconv;
vector<vector<double> > convos;
Nconv = 0;
for (int i=1; i<=N; i++){
Nconv = Nconv + N-i;
} // Calculates # of possible convos based on N.
insertpairs(convos, Nconv, N);
// breakpoint here.
..... // code continues, but rest isn't relevant.
}
Если я ставлю точку останова внутри пустой функции я могу видеть, что она работает правильно, однако, когда он заканчивает все значения в массиве convos
просто вернуться к нулю. Почему это?
Nice один спасибо! – fred
Я добавил еще один подход, если вы сочтете это полезным. – user2079303