我一直坐幾個小時,試圖找到一種方法來在std :: map中使用複數值。我的代碼是如何在地圖中使用複數C++
std::vector<std::complex<double>> coord; // bin coordinates
std::vector<std::string> ref; //A1,D4,...
std::map<std::string,std::complex<double>> bin; //coordinates and reference
std::string letter_ref[] = {"H","G","F","E","D","C","B","A"};
std::string int_ref[] = {"1","2","3","4","5","6","7","8"};
double x=0;
double y=0;
for(int i=0;i<8;++i){
for(int j=0;j<8;++j){
coord.push_back(std::complex<double>(7-i,j));
ref.push_back(letter_ref[i]+int_ref[j]);
bin.insert(std::pair<std::string,std::complex<double>>(letter_ref[i]+int_ref[j], (7-i,j)));
//bin.insert(std::pair<std::string,std::complex<double>>(letter_ref[i]+int_ref[j], (7-x,y)));
++y;
}
++x;
}
這是構造函數的一部分。我有一個地圖和兩個應該顯示相同內容的向量的原因是因爲我開始使用矢量,但發現它是一個很難處理的問題。但我想讓更多的時間讓老的媒介先得到地圖。
但是,該圖並未給出預期結果。與
std::map<std::string,std::complex<double>>::iterator it;
int i = 0;
for(it=bin.begin();it!=bin.end();++it){
std::cout<<"["<<it->first<<","<<it->second<<"] ";
if ((i+1) % 8 == 0)// & i>0)
std::cout<<"\n";
++i;
}
打印地圖在第一種情況下(未註釋)是否表明,虛部爲0,但第一部分是正確的。第二種情況(註釋)仍然顯示虛數部分的0值,但實數部分確實給出值0-63,而不是給出值0-7。
有誰知道如何在地圖中正確使用複數?
請發佈[SSCCE](http://www.sscce.org/)。您的代碼引用了未聲明的變量。很難說出你實際想要做什麼以及出了什麼問題。 – japreiss
上面'cb'實例指的是什麼? –
opps我忘記了這一點。但下面的答案很清楚。 – patrik