Как насчет списка словаря?
Dictionary<string, int> list = new Dictionary<string, int>();
foreach( var item in Enum.GetNames(typeof(MyEnum)) )
{
list.Add(item, (int)Enum.Parse(typeof(MyEnum), item));
}
и конечно можно изменить тип значения словаря на то, что перечислимые значения.
subvec
, вероятно, лучший способ. В документации Clojure говорится, что subvec
является « O (1) и очень быстрым, так как результирующий вектор имеет общую структуру с исходным и никакая обрезка не выполняется ». Альтернативой может быть прохождение вектора и построение нового, пропуская определенные элементы, что будет медленнее.
Удаление элементов из середины вектора - не то, в чем векторы обязательно хороши. Если вам приходится делать это часто, подумайте об использовании хэш-карты, чтобы можно было использовать disoc
.
См .:
user=> (def a [1 2 3 4 5])
user=> (time (dotimes [n 100000] (vec (concat (take 2 a) (drop 3 a)))))
"Elapsed time: 1185.539413 msecs"
user=> (time (dotimes [n 100000] (vec (concat (subvec a 0 2) (subvec a 3 5)))))
"Elapsed time: 760.072048 msecs"
Ага - subvec самый быстрый