很多时候,用邻接矩阵(二维数组)存图,如果是稀疏图,一般会造成很大的空间浪费。
c++11 的vector容器新增了 emplace_back方法。一般和push_back用法没有大的不同,但是性能要好。
最主要的是,据我研究发现 emplace_back()方法可以像邻接表一样给数组元素链接上邻居
这样我们就可以用一维的vector数组去实现二维的操作。节省了一部分资源
举个例子:
#include<bits/stdc++.h> using namespace std; int main() { vector<int>v[29]; v[3].emplace_back(1); v[3].emplace_back(2); v[3].emplace_back(333); for(int i : v[3]) cout<<i<<endl; }
这样跑出来,结果是
也就是说,邻接表甚至简单的链表都可以基于v[i].emplace_back(j)实现。
在面对被卡空间复杂度或者递归层数要爆炸的情况下,这个方法很有用