zoukankan      html  css  js  c++  java
  • 基于c++11特性的邻接表实现

    很多时候,用邻接矩阵(二维数组)存图,如果是稀疏图,一般会造成很大的空间浪费。

    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)实现。

    在面对被卡空间复杂度或者递归层数要爆炸的情况下,这个方法很有用

  • 相关阅读:
    附加作业
    我的个人总结
    进度更新
    结对编程——电梯调度
    程序阅读的改进
    WordCount
    阅读程序
    VS2013单元测试
    附加作业
    个人最终总结
  • 原文地址:https://www.cnblogs.com/ranzhong/p/14220837.html
Copyright © 2011-2022 走看看