Q: 关于STL Vector作为函数参数使用有关问题
Q: 关于STL Vector作为函数参数使用问题
最近刚接触STL vector容器,对于容器的使用存在很多问题,现在碰到了一个问题是vector能否作为一个函数的参数呢?
我尝试写了一个code,如下:
运行后出现报错,如下:
Trial.cpp:20: error: cannot convert `std::vector<double, std::allocator<double> >' to `double*' for argument `1' to `void calculateAdjClosePrice(double*, double*, double*)'
不知道错在哪里,请求高手们指点!
------解决方案--------------------
把函数定义放在main之前。注意你用了重载。
最近刚接触STL vector容器,对于容器的使用存在很多问题,现在碰到了一个问题是vector能否作为一个函数的参数呢?
我尝试写了一个code,如下:
#include <cstdlib>
#include <vector>
#include <iostream>
using std::vector;
using std::cout;
using std::endl;
using std::ios;
void calculateAdjClosePrice(double *close, double *open, double *adj_close);
int main(int argc, char** argv) {
vector<double> close;
vector<double> open;
vector<double> adjclose;
close.push_back(2.02);
open.push_back(1.52);
adjclose.push_back(1);
calculateAdjClosePrice(close,open,adjclose);
return 0;
}
void calculateAdjClosePrice(vector<double> close, vector<double> open, vector<double> adj_close){
int size=close.size();
adj_close.clear();
for(int i=0;i<size;i++){
if (close.at(i)>open.at(i))
adj_close.push_back(close.at(i)+0.01*open.at(i));
else
adj_close.push_back(close.at(i)-0.01*open.at(i));
}
vector<double>::iterator p;
for (p=adj_close.begin();p!=adj_close.end();p++)
cout<<*p<<endl;
}
运行后出现报错,如下:
Trial.cpp:20: error: cannot convert `std::vector<double, std::allocator<double> >' to `double*' for argument `1' to `void calculateAdjClosePrice(double*, double*, double*)'
不知道错在哪里,请求高手们指点!
------解决方案--------------------
把函数定义放在main之前。注意你用了重载。