结构中的矢量推回功能不起作用

Vector push back function in structure not working

我想将一个向量存储在一个结构中,然后从一个函数附加到该向量。这是否有意义,或者我只能在创建向量时在向量中创建元素?如果不是,下面代码的错误在哪里,因为如果我执行它,它什么都不打印。我希望它将数字 0-4 存储为 holder 中向量 nums 的组成部分。

#include "iostream"
#include "vector"

using namespace std;

struct layers{
    vector<float> nums;
};

void range(layers layer){
    for(int n = 0; n< 5; n++){
        layer.nums.push_back(n);
    }
}

int main(){
    layers holder;
    range(holder);
    for(int k  = 0; k < holder.nums.size(); k++){
        std::cout << holder.nums[k] << " ";
    }
    return 0;
}

您必须通过引用而不是值来传递 layer 参数。而不是 void range(layers layer),而是 void range(layers &layer).

如果你按值传递,你就是在复制向量,然后在函数内部修改这个副本,所以你的原始向量保持不变。如果按引用传递,则修改原始向量。

Try it online!

#include "iostream"
#include "vector"

using namespace std;

struct layers{
    vector<float> nums;
};

void range(layers & layer){
    for(int n = 0; n< 5; n++){
        layer.nums.push_back(n);
    }
}

int main(){
    layers holder;
    range(holder);
    for(int k  = 0; k < holder.nums.size(); k++){
        std::cout << holder.nums[k] << " ";
    }
    return 0;
}

输出:

0 1 2 3 4