■
計言語課題
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; }