mehran_gh
چهارشنبه 28 فروردین 1392, 22:26 عصر
چطور میشه اپراتور = رو به صورتی overload کرد که در سمت راست آرایه دریافت کنه ؟
به این صورت :
TMS A = {(“hadi”,10),(“ali”,5),(“saman”,20)}
حامد مصافی
پنج شنبه 29 فروردین 1392, 00:56 صبح
#include <iostream>
#include <initializer_list>
#include <vector>
using namespace std;
#define TWODARRAY initializer_list<pair<string, int>>
class TMS
{
     vector<pair<string, int>> elements;
    
public:
  
    TMS()
    {
    }
    
    TMS(TWODARRAY arr)
    {
        readElements(arr);
    }
    
    TMS& operator = (TWODARRAY arr)
    {
        readElements(arr);
        return *this;
    }   
    void readElements(TWODARRAY arr)
    {
        TWODARRAY::iterator it;
        for ( it=arr.begin(); it!=arr.end(); ++it){
            cout << (*it).first << '\t' << (*it).second << endl;
            pair<string, int> p = make_pair<string, int>(
                (string)(*it).first,
                (int)(*it).second                
            );
            elements.push_back(p);
        }
    }
};
int main(void)
{   
    TMS A = {{"hadi",10},{"ali",5},{"saman",20}};
    //or TMS B ({{"hadi",10},{"ali",5},{"saman",20}});
 
    return 0;
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.