計言語課題
USK氏の指摘を受けて簡単に修正できそうなとこを修正.動作は変わらず.
#include <iostream>
#include <string>
#include <map>
#include <utility>
using namespace std;
struct VariableInfo{ //変数の情報
string Type; //型名
string Scope; //所属関数名
};
class VariableTable{
map<string,VariableInfo> m_VariableInfo; //変数表
public:
int insert(string,VariableInfo); //変数表に変数を登録する
int search(string); //変数表から変数を検索する
int output(); //変数表に登録されている変数をすべて表示する
friend ostream &operator<<(ostream &stream,VTABLEMAP::iterator p);
};
typedef map<string,VariableInfo> VTABLEMAP; //長ったらしいのでtypedef
ostream &operator<<(ostream &stream,VTABLEMAP::iterator p){
stream << "変数名:" << p->first << "\t型:" << p->second.Type << "\t有効範囲:" << p->second.Scope << endl;
return stream;
}
int VariableTable::insert(string sVariableName,VariableInfo vinfo){
m_VariableInfo.insert(make_pair(sVariableName,vinfo));
return 0;
}
int VariableTable::search(string sVariableName){
const VTABLEMAP::iterator p = m_VariableInfo.find(sVariableName);
if(p != m_VariableInfo.end()){ //変数が見つかった
cout << p;
}
else{ //見つからなかった
cout << sVariableName << "は登録されていません" << endl;
}
return 0;
}
int VariableTable::output(){
VTABLEMAP::iterator p = m_VariableInfo.begin();
while(p != m_VariableInfo.end()){ //マップに登録されている変数をすべて表示する
cout << p;
p++;
}
return 0;
}