public void TransformVertices(Func <T, T> transformFunc) { _VertexCache.Clear(); for (int i = 0; i < _Vertices.Count; ++i) { _Vertices[i] = transformFunc(_Vertices[i]); var key = new StoredKey(_Vertices, i); _VertexCache[key] = i; } }
public int Use(T v) { if (_VertexCache.TryGetValue(new QueryKey(v), out int index)) { System.Diagnostics.Debug.Assert(Object.Equals(v, _Vertices[index]), "Vertex equality failed"); return(index); } index = _Vertices.Count; _Vertices.Add(v); var key = new StoredKey(_Vertices, index); _VertexCache[key] = index; return(index); }