如何在程序周围传递数据而不每次都复制数据?
具体来说,在调用sim(ohlc)
时,我只想传递指针引用,而不希望将数据复制到函数中。
这是我制作的程序,但是我不确定这是执行该程序的最佳方法(特别是在速度和内存使用方面)。
我想我没有像我应该的那样传递指向sim(ohlc)
的指针,但是如果我尝试sim(&ohlc)
,我不知道如何更改sim
函数以接受它。
struct ohlcS {
vector<unsigned int> timestamp;
vector<float> open;
vector<float> high;
vector<float> low;
vector<float> close;
vector<float> volume;
} ;
ohlcS *read_csv(string file_name) {
// open file and read stuff
if (read_error)
return NULL;
static ohlcS ohlc;
ohlc.timestamp.push_back(read_value);
return &ohlc;
}
int sim(ohlcS* ohlc) {
// do stuff
return 1;
}
main() {
ohlcS *ohlc = read_csv(input_file);
results = sim(ohlc);
}
最佳答案
它是C ++,请使用参考。这是安全的,因为您返回了静态对象。
static ohlc ohlc_not_found;
ohlc &read_csv(string file_name) {
// open file and read stuff
if(error_while_opening)
{
return ohlc_not_found;
}
static ohlc loc_ohlc;
loc_ohlc.timestamp.push_back(read_value);
return loc_ohlc;
}
int sim(const ohlc& par_ohlc) {
// do stuff
return 1;
}
....
ohlc& var_ohlc = read_csv(input_file);
if(var_ohlc == ohlc_not_found)
{
// error handling
return;
}
results = sim(var_ohlc);
如果要在sim中修改
par_ohlc
,请不要将其设为const。并且不建议在类名和变量名中都使用
ohlc
:(关于c++ - 传递指向函数的指针而不复制它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21308748/