0
私はグラフをC++で実装する方法を学んでいます。私は、次のコードを見に行きました。誰もシンボル*と&の機能は、データ型 "頂点"と "文字列"の動作を説明することができますか?*、&symbolの目的はデータ型に影響しますか?
#include <iostream>
#include <vector>
#include <map>
#include <string>
using namespace std;
struct vertex {
typedef pair<int, vertex*> ve;
vector <ve> adj; //cost of edge, distination to vertex
string name;
vertex (string s) : name(s) {}
};
class gragh
{
public:
typedef map<string, vertex *> vmap;
vmap work;
void addvertex (const string&);
void addedge (const string& from, const string&, double cost);
};
void gragh::addvertex (const string &name)
{
vmap::iterator itr = work.find(name);
if (itr == work.end())
{
vertex *v;
v = new vertex(name);
work[name] = v;
return;
}
cout << "Vertex alreay exist";
}
int main()
{
return 0;
}
ありがとうございます。このコード行で&記号はどうですか:void addvertex(const string&)それはまた、何かを逆参照しているのでしょうか? – namcao
これは、これが受け入れる文字列が参照によって受け入れられることを意味します。つまり、文字列の変更は関数呼び出しの後もそのまま残ります。あなたの問題を解決した場合は、この回答を受け入れてください。 – Asim