使用来自参考指针的信息来填充向量

Using information from a reference pointer to fill a vector

我的目标是构建一个接受整数列表并将它们相互比较的函数。基本上,如果当前位置前后位置的数字匹配,则当前数字变为(或保持)0。否则,它变为(或保持)1。

代码必须假定在第一个值之前和最后一个值之后有一个零,这就是为什么在 for 循环之外有那些 "if-else" 语句的原因。更新必须一次全部发生,这就是为什么有第二个向量来存储主向量 (houses) 将在最后设置的新值 (x)。

我的计划是获取传递给函数的值并用它们填充一个向量。但是,我以前从未见过这样做(即使我距离学士学位还不到 3 个月……谢谢 Strayer)。

如何用存储在引用内存位置中的列表填充向量?

注:

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;
}

My goal is to build a function that takes a list of integers and compares them to each other.

阅读你的代码,我了解到“整数列表”实际上是一个作为指针传递的数组,那几天是数组中整数的数量:

vector<int> cellCompete(int* states, int days)  

不幸的是,在您的循环中,您总是附加到向量 *state,在您的情况下,这将是整数的第一个数组。如果指针指向一个数组,您可以将其递增以指向下一个元素,或者像对数组一样对其进行索引:

vector<int> houses;
vector<int> x(8);   // you can get the right size at construction
for (unsigned int i = 0; i<8; i++){
    houses.push_back(states[i]);
    cout << houses[i] << endl;
}

我无法回答的问题:是否有理由使用 8 的硬编码大小?不应该是 days 吗?

有了这个提示,我把剩下的练习留给你,以促进你的学习体验;-)