代码来源:https://github.com/fang0jun/Algorithm/blob/master/4_Graphs/Graph.h
// 《算法》第四版中 图构建的相关API的c++实现 #ifndef GRAPH_H_INCLUDED #define GRAPH_H_INCLUDED #include "func.h" class Graph{ private: int V; int E; vector<vector<int>> adj; //邻接链表 void addEdge(int v,int w){ adj[v].push_back(w); adj[w].push_back(v); } public: Graph(int v):V(v),E(0){adj.resize(v,vector<int>());}; /* 输入样例: * 3(顶点个数) * 3(边数) * 2 3 (顶点间的关系 顶点2 - 顶点3相连) * 2 4 (顶点2 - 顶点4相连) */ Graph(string file){ //另一种初始化方式 std::ifstream infile(file); string tmp; int lineNum = 0; while(std::getline(infile,tmp)){ std::istringstream iss(tmp); int v1,v2; if(lineNum==0) {iss>>V; adj.resize(V,vector<int>());} else if(lineNum==1) iss>>E; else { iss>>v1>>v2; addEdge(v1,v2); } lineNum++; } }; int getV(){return V;} int getE(){return E;} int degree(int v){return adj[v].size();} vector<int> getadj(int v){return adj[v];} string toString(){ string s = V + " vertices, " + E + " edges\n"; for(int v = 0; v < V; v++){ s += v + ": "; for(int w : this->adj[v]) s += w + " "; s+='\n'; } return s; } }; #endif // GRAPH_H_INCLUDEDresize(),设置大小; reserve(),设置容量; resize()是分配容器的内存大小,而reserve()只是设置容器容量大小,但并没有真正分配内存。 resize()可以传递两个参数,分别是大小和初始值,初始值默认为0,reserve()只能传递一个参数,不能设置初始值,其初始值为系统随机生成。
例:
using namespace std; int main() { vector<int>m; vector<int>n; vector<int>s; m.resize(10); n.reserve(10); s.resize(10, 6); cout << "m: "; for (int i = 0; i < 10; i++) { cout << m[i] << " "; } cout << endl; cout << "n: "; for (int i = 0; i < 10; i++) { cout << n[i] << " "; } cout << endl; cout << "s: "; for (int i = 0; i < 10; i++) { cout << s[i] << " "; } cout << endl; return 0; }函数作用:将字符串分词打包(按空格符分词)
#include<sstream> //istringstream 必须包含这个头文件 using namespace std; int main() { string str="i am a boy"; istringstream is(str); string s; while(is>>s) { cout<<s<<endl; }输出是: i am a boy
作用: 此函数可按整行读取,包括前导和嵌入的空格,并将其存储在字符串对象中(相当于一个可以识别空格符号的cin函数) (tip:流的来源可以是 cin>>输入,也可以通过 ifstream streamName(str) 将字符串转变为文件输入流)
using namespace std; int main() { string name; string city; cout << "Please enter your name: "; getline(cin, name); cout << "Enter the city you live in: "; getline(cin, city); cout << "Hello, " << name << endl; cout << "You live in " << city << endl; return 0; }详细解释跳转:https://www.cnblogs.com/wkfvawl/p/11040760.html
