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

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

  • 相关阅读:
    C# TryParse
    C#委托的学习笔记
    C#基础学习C# 8.0 In a Nut Shell
    Everything学习之三
    Everything学习笔记二
    搜索软件everything帮助文档全文翻译
    Git笔记之基础命令
    Git学习笔记
    附加属性
    日期函数
  • 原文地址:https://www.cnblogs.com/ranzhong/p/14220837.html
Copyright © 2011-2022 走看看