我有一個由std::vector
表示的「表」,其中每個元素都是boost::fusion::vector
。我需要返回此表的「列」表示作爲std::vector
,而不復制任何值。這樣做的最好方法是什麼?我正在嘗試構建nviews的std::vector
,其中n是列號,但它似乎不起作用。我在正確的軌道上還是有其他方法去解決這個問題?從融合載體的std向量返回列,而不復制
0
A
回答
1
根據docs here,boost::fusion::vector
的at<N>(s)
方法返回對包含元素的引用。
此外,如果您使用boost庫版本1.48,它們支持C++ 11的移動語義。這意味着你可以有一個循環遍歷你的表的大小的函數,用於特定的列號,例如i
,並填充一個列向量,該列向量是std::vector
。然後,您只需返回此列向量,調用函數將獲得move
和std::vector
。任何時候都不做任何複製。
您可以在標準頁面閱讀更多關於move semantics here的信息。您還可以觀看Bjarne Stroustrup explaining it in brief here的視頻。跳到第37分鐘,直到第43分鐘。
+0
非常有幫助的答案,謝謝! – 2012-02-18 16:03:38
相關問題
- 1. 從std :: string向量返回char
- 2. 如何在運行時將值返回融合向量?
- 3. 指針的std ::性病載體::向量
- 4. 返回的std :: string與載體
- 5. 融合表值不正確返回
- 6. 填充的std ::向量與異構的boost ::融合矢量型數據
- 7. 指定載體而不復制它們
- 8. 的std ::向量:如何返回指針向量C++
- 9. 複製數組到一個std ::向量
- 10. 移位和複製std ::向量元素
- 11. std向量,複製數據結構
- 12. 複製指針向量而不切片
- 13. 返回NULL,而不是從PostgreSQL的功能複合價值
- 14. std :: string返回不合適的值
- 15. 融合的位置返回NULL
- 16. 複製載體矢量
- 17. sapply()返回,而不是一個向量列表
- 18. 臭蟲在C++ - 在C++ set_difference不返回的std ::複製
- 19. 複製陣列 - 載體
- 20. 返回向量的data.table聚合,如scale()
- 21. 從函數返回值時使用std :: move()以避免複製
- 22. 從takeOrdered返回RDD,而不是列表
- 23. 複製一個std ::向量重複字段從protobuf的用的memcpy
- 24. 轉換CV ::墊到std ::向量不復制
- 25. 爲什麼std :: runtime_error :: what()返回const char *而不是std :: string const&
- 26. 從std :: basic_istream複製特定數量的字符到std :: string
- 27. 從融合表製作ColumnChart的問題
- 28. sqlite - 返回所有列的最大一列而不重複
- 29. C++ 11複製的std ::的std ::的unique_ptr的載體,其爲一個構件
- 30. 融合表限制
您可以使用C++ 11還是僅限於C++ 03? – ildjarn 2012-02-17 23:25:27
我想我都可以,但我想知道會有什麼不同。 – 2012-02-18 02:56:40