#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類型轉(zhuǎn)換為double*!”而這里的50代表的是有50個double*,又不是把int轉(zhuǎn)換為double*,不知道編譯器怎么這么理解,求解決方案。。。。
在代碼中增加 deque<double*> qq(50,NULL);,VC6下沒有問題
#include <deque>額,我在vs2010下試了,也沒問題! 但這句話來自開源代碼,我只能在ubuntu下跑,就遇到了問題。編譯器無法識別,我將置零的方法改了下,編譯通過了,但是matlab又中斷了。。。 我是在32位matlab(matlab、C++混合編程)上跑的,作者是在64位matlab上跑的,我看看是否和版本相關!希望你能解決不過還是吐槽一句:指針放在容器里面管理真沒有必要,不如直接將double放進去。不過你拿別人的代碼就另說了
#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;
}