【发布时间】:2016-05-11 19:03:23
【问题描述】:
我想表示一个图形数据结构,我在 c++ stl 中使用对向量的向量。示例:
vector<vector<pair<int, int>>> G;
现在我可以了,G[u].push_back(make_pair(v, w));
问题:我需要为这个数据结构指定一个大小。如果我不尝试将元素推送到此数据结构时,我会遇到分段错误。如果我确实给出了这样的尺寸:
vector< vector<ii> > adj(10, std::vector<ii>(10));
现在的问题是前 10 对向量被初始化为零。如果我现在推回一个元素,它会被推到第 11 个位置。前 10 个为 0。我不想这样做。我想按我需要的顺序插入元素。一个 sn-p 让您了解我正在尝试做什么:
for(int i=0;i<E-1;i++)
{
cin >> p >> q >> l;
adj[p].push_back(ii(q, l));
adj[q].push_back(ii(p, l));
}
上面的输出将是 10 个零,后跟推送的值。有什么办法可以解决这个问题?
【问题讨论】:
-
或许想想
std::vector<ii>(10)是什么意思。 -
也许你得到一个分段错误,因为你没有为 G[u] 保留内存。
标签: c++ vector data-structures stl graph-theory