结构中的矢量推回功能不起作用
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)
.
如果你按值传递,你就是在复制向量,然后在函数内部修改这个副本,所以你的原始向量保持不变。如果按引用传递,则修改原始向量。
#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
我想将一个向量存储在一个结构中,然后从一个函数附加到该向量。这是否有意义,或者我只能在创建向量时在向量中创建元素?如果不是,下面代码的错误在哪里,因为如果我执行它,它什么都不打印。我希望它将数字 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)
.
如果你按值传递,你就是在复制向量,然后在函数内部修改这个副本,所以你的原始向量保持不变。如果按引用传递,则修改原始向量。
#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