在stl中容器有vector、list、deque等等,但是却没有图结构。这是因为图结构比较复杂,而stl是一个模板库,它主要是提供一些基本的数据结构和算法,而图结构的实现比较复杂,需要考虑较多的情况,因此在stl中没有提供图结构。
此外,我们可以通过其他的库来实现图结构,例如boost库提供了一个图结构,可以满足更多的需求。
图结构的特殊性也导致了它在stl中的没有被实现。图结构是一个由节点和边构成的数据结构,节点之间有关联,而且边可以有方向,这种特殊性导致了图结构需要考虑多种情况,比如图的连通性、可达性等等,这些都需要特殊的算法和数据结构来处理。
因此图结构需要一个独立的库来维护与之相关的算法和数据结构,而不是简单地将其作为stl的一种容器类型。这样可以让实现变得更加简单,也可以满足更多不同的需求。
虽然stl中没有提供图结构,但是它提供了一些替代方案。例如可以通过vector或者list来模拟图结构,其中vector可以表示节点,list可以表示节点之间的关系。虽然这种方法比较麻烦,但是仍然可以满足一些简单的需求,例如找到两个节点之间的最短路径、判断节点之间是否联通等。
此外,stl还提供了一些可以处理图结构相关算法的容器和算法,例如set和map容器,以及广度优先搜索和深度优先搜索等基本算法。
总之,stl没有提供图结构的原因是由于图结构比较复杂,有其特殊性,需要考虑多种情况,因此需要一个独立的库来维护。虽然stl没有提供图结构,但是可以通过其他的库来实现图结构,也可以使用stl中提供的一些容器和算法来解决一些简单的图结构问题。