的陣列最有效的方法我有一個像結構:返回struct成員
struct ohlc{
double open,high,low,close;
};
部分我的應用程序利用這些收集的。有時候打上時間戳。我的應用程序的另一部分使用第三方(封閉)庫,它需要雙倍數組,例如關閉[]或打開[]等。
什麼是最適合的容器和方法來返回一個雙數組的開放[],關閉[]等。目前,我使用矢量和迭代整個集合創建陣列。有沒有更有效的方法。
我可能會完全錯誤,我目前使用的結構?我擁有的是價格/價格的價格。我嘗試保留M1,M5,M15和H1蠟燭棒的集合,即OHLC數據。通常我只需要100小時的數據。隨着價格出現新的一分鐘,我可以隨時刪除最長的分鐘,從而保持100小時的數據。由於H1,M15,M5,M1都可以根據時間戳詢價價格的基礎數據創建,出於性能原因,是否還需要持有獨立的H1,M15等。我問這是因爲它是重複的數據?
編輯:我目前的方法對我的通常目的很好,但現在我是'回測試',我在我的代碼中投擲了數百萬個出價/要價,並且需要儘可能高效。後面的測試目前還需要幾個小時才能完成
我從我的收藏結構的回報如下:
std::vector<double> Series::EODSeries::open(const_iterator iter, unsigned long num) const
{
vector<double> v;
if(iter == end())
return v;
// reverse iterator init skips the first element in collection. We must manually insert the current element.
v.insert(v.begin(), iter->second.open);
unsigned i = 1;
for(const_reverse_iterator rev_iter(iter); i < num && rev_iter != rend(); ++rev_iter, ++i)
v.insert(v.begin(), rev_iter->second.open);
return v;
}
你是如何返回vector的,並且調用者是否需要擁有它的副本?他們需要能夠寫信給它嗎?也許一個代碼片段顯示瞭如何從矢量中獲取數組並將其傳遞給第三方API將會有所幫助。 – juanchopanza
會將示例添加到我的原始 – stratman