簡體   English   中英

按索引范圍從向量中選擇元素

[英]Selecting elements from vector by index range

盡管進行了一些谷歌搜索,但我找不到有關如何執行此操作的任何信息。

如果我想獲取數組的一些元素,我可以做

var partOfArray = myArray[firstIndex..lastIndex];
var anotherpartOfArray = myArray[firstIndex..^1];

我可以對 Vector 類型的東西做同樣的事情嗎? 就像是

// Vector<double> myVector; 
var partOfVector = myVector(firstIndex..lastIndex);

目前我唯一的解決方法是將向量轉換回數組,索引它,然后將其轉換回向量。 必須有一種更簡單的方法來做到這一點。

由於使用隱式范圍索引的“可計數”要求,這似乎不可用:

  1. 類型是可數的。
  2. 該類型有一個可訪問的實例索引器,它采用單個 int 作為參數。
  3. 該類型沒有可訪問的實例索引器,它將索引作為第一個參數。 Index 必須是唯一的參數,或者其余參數必須是可選的。

在此上下文中,“可Count ”意味着具有CountLength實例屬性, Vector<T>僅具有靜態 Count 屬性。

請注意, Vector<T>旨在用於高性能 SIMD 優化,即它等同於 c++ 向量,不幸的是,這通常意味着為了性能而犧牲便利性。 如果您將向量轉換回數組並再次返回,則可能會顯着降低向量化的好處。 在不了解具體應用的情況下,很難提供更好的建議。

我還建議閱讀SIMD 內在函數 我從那篇文章中得出的結論是,與內部函數相比, Vector<T>的收益相當有限,即使后者最終是特定於平台的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM