Моя цель - создать функцию, которая берет список целых чисел и сравнивает их друг с другом. В основном, если числа в позициях до и после текущей позиции совпадают, текущее число становится (или остается) 0. В противном случае оно становится (или остается) 1.
Код должен предполагать, что есть ноль перед первым и после последнего значения, поэтому есть те «if-else» операторы за пределами для l oop. Обновление должно происходить одновременно, поэтому существует второй вектор для хранения новых значений (x
), который будет установлен главным вектором (houses
) в конце.
Я планировал взять значения, переданные функции, и заполнить ими вектор. Тем не менее, я никогда не видел, чтобы это было сделано раньше (даже если я менее чем за 3 месяца до получения степени бакалавра ... спасибо, Страйер).
Как заполнить вектор списком, хранящимся в указанной ячейке памяти?
Примечание:
Я использовал cout << *states;
как способ попробовать и увидеть, что код видит, когда я ссылаюсь на местоположение, когда я понял, что это не работает , но все, что он возвращает, это одно целое число. Может ли кто-нибудь помочь мне понять, как это работает, и как заполнить вектор значениями?
Кроме того, я знаю, что было бы более эффективно использовать push_back()
вместо .at(i)=
метода, но я просто пробовал все, что мог, чтобы выяснить проблему и намотать там, когда я сдался.)
vector<int> cellCompete(int* states, int days)
{
vector<int> houses;
vector<int> x;
x.resize(8);
cout << *states;
for (unsigned int i = 0; i<8; i++){
houses.push_back(*states);
cout << houses.at(i) << endl;
}
for (unsigned int i = 0; i<days; ++i) {
if (houses.at(1)==0) {
x.at(0)=0;
}
else{
x.at(0)=1;
}
for (unsigned int y=1; y<7; y++){
if (houses.at(y-1)==houses.at(y+1)){
x.at(y)=0;
}
else{
x.at(y)=1;
}
}
if (houses.at(6)==0){
x.at(7)=0;
}
else{
x.at(7)=1;
}
houses=x;
}
return houses;
}