将向量传递给c+中的函数时,类型出现问题+; 我开始了C++类,以前从来没有在语言中做过任何事情,而且我被矢量迷惑了。我做了一个玩具例子,我不太明白为什么我把一个向量变成了向量。代码如下: #include <iostream> #include <vector> using namespace std; vector<double> a; void func(vector<double> *); int main() { for (int i = 0; i < 100; i++) { a.push_back(double(i)); } func(&a); return 0; } void func(vector<double> *vec) { cout << double(vec[0]) << endl; return; } #包括 #包括 使用名称空间std; 载体a; void func(向量*); int main() { 对于(int i=0;i
您不需要将指针将向量传递给c+中的函数时,类型出现问题+; 我开始了C++类,以前从来没有在语言中做过任何事情,而且我被矢量迷惑了。我做了一个玩具例子,我不太明白为什么我把一个向量变成了向量。代码如下: #include <iostream> #include <vector> using namespace std; vector<double> a; void func(vector<double> *); int main() { for (int i = 0; i < 100; i++) { a.push_back(double(i)); } func(&a); return 0; } void func(vector<double> *vec) { cout << double(vec[0]) << endl; return; } #包括 #包括 使用名称空间std; 载体a; void func(向量*); int main() { 对于(int i=0;i,c++,vector,C++,Vector,您不需要将指针*与std::vector混合使用 方法1(不推荐): 改变 cout << double(vec[0]) << endl; 到 实际错误的原因更多地是由于对指针而不是向量的误解。问题是您正在将指针传递给向量。如果要使用向量本身,请执行以下操作: cout << (*vec)[0] << endl; 然后呼叫: func(a); 另一种使用向量的方法是使用std::vector::const_迭代器,如下所示 #include
*
与std::vector
混合使用
方法1(不推荐):
改变
cout << double(vec[0]) << endl;
到
实际错误的原因更多地是由于对指针而不是向量的误解。问题是您正在将指针传递给向量。如果要使用向量本身,请执行以下操作:
cout << (*vec)[0] << endl;
然后呼叫:
func(a);
另一种使用
向量的方法是使用std::vector::const_迭代器,如下所示
#include <iostream>
#include <vector>
double func(std::vector<double>::const_iterator iter);
int main()
{
std::vector<double> vec;
for (double i = 0.0; i < 1; i += 0.1){
vec.push_back(i);
}
std::cout<< func(vec.begin()+3) << " "
<< func(vec.begin()+6) << std::endl;
return 0;
}
double func(std::vector<double>::const_iterator iter){
return *iter;
}
哦,好极了,这很好用,但为什么这样做呢?我认为向量只是可以轻松调整大小的数组,这是错误的吗?@user1023465将指针*
与std::vector
@user1023465更新的答案混合使用是一种糟糕的做法。在堆栈上传递一个vec是一个非常糟糕的主意。vector
应该是const vector&vec
@user1023465“我认为向量只是可以轻松调整大小的数组,这是错误的吗?”--是的,完全错误。向量是一个对象实例。
void func(const vector<double> &vec)
func(&a);
func(a);
cout << (*vec)[0] << endl;
void func(const vector<double>& vec)
{
cout << vec[0] << endl;
return;
}
func(a);
#include <iostream>
#include <vector>
double func(std::vector<double>::const_iterator iter);
int main()
{
std::vector<double> vec;
for (double i = 0.0; i < 1; i += 0.1){
vec.push_back(i);
}
std::cout<< func(vec.begin()+3) << " "
<< func(vec.begin()+6) << std::endl;
return 0;
}
double func(std::vector<double>::const_iterator iter){
return *iter;
}
0.3 0.6