> 其他 >
deque的用法
deque w_hist;
w_hist = deque (50,NULL);这句话在32位机器上编译报错,是什么原因,怎么解决!
把50换成50.0后,虽然编译通过,但运行中断!
人气:362 ℃ 时间:2020-05-12 22:57:23
解答
没有看到有对应的构造函数,下面是一个例子:
#include <deque>
#include <iostream>

using namespace std;

int main()
{
\x05cout<<"input total number:";
\x05int n;
\x05cin >> n;
\x05
\x05deque<double*> q;
\x05for(int i=0;i<n;++i)
\x05{
\x05\x05double *tmp=new double;
\x05\x05cout<<"input number "<<i+1<<":";
\x05\x05cin>>*tmp;
\x05\x05q.push_back(tmp);
\x05}
\x05
\x05for(i=0;i<q.size();++i)
\x05{
\x05\x05double *tmp=q.at(i);
\x05\x05cout<<*tmp<<" ";
\x05}
\x05cout<<endl;
}我问题的重点在于,申明的时候,(50,NULL)这里是为了给容器分配初始值,如果类型不用指针的,都ok,但是只要用了double*类型,编译器就会报错“无法将int类型转换为double*!”而这里的50代表的是有50个double*,又不是把int转换为double*,不知道编译器怎么这么理解,求解决方案。。。。

在代码中增加 deque<double*> qq(50,NULL);,VC6下没有问题

#include <deque>
#include <iostream>

using namespace std;

int main()
{
cout<<"input total number:";
int n;
cin >> n;

deque<double*> qq(50,NULL);
deque<double*> q;
for(int i=0;i<n;++i)
{
double *tmp=new double;
cout<<"input number "<<i+1<<":";
cin>>*tmp;
q.push_back(tmp);
}

for(i=0;i<q.size();++i)
{
double *tmp=q.at(i);
cout<<*tmp<<" ";
}
cout<<endl;
}
额,我在vs2010下试了,也没问题! 但这句话来自开源代码,我只能在ubuntu下跑,就遇到了问题。编译器无法识别,我将置零的方法改了下,编译通过了,但是matlab又中断了。。。 我是在32位matlab(matlab、C++混合编程)上跑的,作者是在64位matlab上跑的,我看看是否和版本相关!希望你能解决不过还是吐槽一句:指针放在容器里面管理真没有必要,不如直接将double放进去。不过你拿别人的代码就另说了
推荐
猜你喜欢
© 2026 79432.Com All Rights Reserved.
电脑版|手机版