![](/img/trans.png)
[英]How can I make my container compatible with boost::range?
我正在滾動一個自定義的、類似標准的容器,我想讓它與boost::range庫兼容。 到目前為止,它適用於所有 STL 算法,並且還滿足以下條件: 但是當我嘗試在這種情況下使用它時: 它似乎缺少一些模板化的元數據。 錯誤是這樣的 是否有類似的概念 assert 我可以用來幫助我完成我的類型缺少的實現 ...
[英]How can I make my container compatible with boost::range?
我正在滾動一個自定義的、類似標准的容器,我想讓它與boost::range庫兼容。 到目前為止,它適用於所有 STL 算法,並且還滿足以下條件: 但是當我嘗試在這種情況下使用它時: 它似乎缺少一些模板化的元數據。 錯誤是這樣的 是否有類似的概念 assert 我可以用來幫助我完成我的類型缺少的實現 ...
[英]Conditional boost::range::join
我想像這樣寫一個 function : 可能嗎? 我應該使用哪種類型而不是IteratorRangeType ? 據我了解, boost::range::join返回類型取決於它的 arguments。 是否有一些包裝器 class 可以分配任何類型的范圍,只要其基礎值類型相同? ...
[英]Why can't I use boost::adaptor::map_values outside a ranged-based loop?
我想使用boost的boost::adaptor::map_values來構造一個std::map的所有值的向量。 拿這個示例代碼(或在 Godbolt 試試) : GCC 抱怨: 我能找到的所有示例和所有文檔都只在接受范圍的語句(如基於范圍的 for 循環或boost::copy )中使用 b ...
[英]How to convert a single object to a boost::any_range?
我正在嘗試創建並返回一個 boost:any_range 只包含一個 object (我不知道這是否是核心問題)但我收到以下錯誤: 錯誤 C2893:無法專門化 function 模板 'range_iterator<C,void>::type boost::range_adl_bar ...
[英]boost::adaptors::transformed for classes without const begin/end
我正在嘗試將一個對象傳遞給boost::adaptors::transformed 。 但是,這似乎只有在該對象的類定義了begin和end const版本時才有效。 然而,對我來說情況並非如此,因為迭代此類的對象會修改對象本身的內部狀態。 這是一個使用虛擬類Vector的最小示例,該類僅公開非 c ...
[英]Interface with BOOST Range
動機與方法我正在編寫一個小型庫,它提供了一個 AST 結構和一些算法來導航它。 簡單來說,AST 的結構如下:struct ASTNode; using tBranch = std::vector<ASTNode>; struct ASTNode { /* some data */ ...
[英]Random access of boost::transformed_range via boost::any_range
我試圖在一些遺留代碼中使用boost::any_range (帶隨機訪問標記),但發現它不喜歡lambdas。 編譯錯誤似乎抱怨lambda對象缺少默認構造函數。 這是預期的行為嗎? 它是按設計的嗎? 我使用的是升級版本1.66的MSVC C ++ 17。 文檔提到transfor ...
[英]why does `boost::lower_bound` take its argument by value?
Range 2.0 中boost::lower_bound (在此處找到)的實現按值獲取其參數。 為什么是這樣? std::lower_bound以 const ref 為參數 - 請參閱此處 ...
[英]Proper way of declaring `const` `boost::range`s
使用boost::any_range ,指定不應該修改基礎容器(如果有)的正確方法是什么? 例如,使用別名 template<typename T> using Range = boost::any_range<T, boost::forward_traversal_t ...
[英]How to use `boost::range` iterators with standard iterators
我有接受std::vector迭代器的函數,如 typedef std::vector<Point> Points; Points ConvexHull(Points::const_iterator first, Points::const_iterator last); ...
[英]c++ boost range. Array of pairs from array
我有一個C數組的int及其大小,即int* arr, unsigned size 。 我想從中獲得類似視圖的效果,其中將有成對的int作為元素。 澄清一下,任務是:我收到一個[1,2,3,4]類的數組,我想要一個視圖,它的外觀像[(1,2),(3,4)] 。 是否有任何方便的方法可 ...
[英]Construct new container from transformed range
在我的代碼中,我經常不得不從先前轉換的范圍中創建一個新容器。 到目前為止,我已經使用了boost::adaptors::transformed和boost::copy_range來完成這項工作,認為容器的構造函數應該能夠預分配必要的內存。 不幸的是,我注意到boost::adaptors:: ...
[英]I've written C++ code to treat boost::optional as a range but it doesn't compile
我希望將boost :: optional視為可以包含零個或一個元素的容器。 從邏輯上講,我應該能夠為容器創建一個迭代器,並在其上使用boost :: for_each。 我的嘗試在下面,但無法編譯。 我已經在GodBolt上嘗試過了。 https://godbolt.org/g/z ...
[英]How to encapsulate custom iterator in function using boost-range
最近我使用boost-range來創建滿足某些標准的元素的范圍。 在所有情況下,我一直使用相同類型的過濾范圍,因此我嘗試將此行為封裝在外部函數中。 這是我的問題開始的地方。 請考慮以下示例。 第一個for-loop表現為預期的打印4和8.然后第二個for循環只打印4.為什么? ...
[英]How to create a version of boost::range::transform that has an extra paramter for capturing context
例如我有一個向量 和一個結構 我希望做到以下幾點 但是上述內容無法在我需要使用的boost(1.55)版本和編譯器版本(VS-2010)中進行編譯。 問題在於,當lambda通過引用捕獲變量時,轉換適配器最終嘗試使用非法且無法編譯的Assign構造函數。 但是,如果什 ...
[英]Can boost range transform adjacent elements in a range?
如果我有一個范圍並且想要轉換相鄰對,是否有一個增強范圍適配器來執行此操作? 例如 和輸出將是 編輯 我已經嘗試過范圍適配器 但是我不知道如何推斷|的返回類型。 操作員。 如果我可以這樣做,那么適配器就解決了。 ...
[英]Algorithm find an element in a container with a given value for one of its members
我經常要做的事情是在元素集合中找到一個具有給定值的元素。 例如給出: 我想找到名稱為“愛麗絲”的人。 一種實現方法是(使用升壓范圍適配器): 對於這樣簡單的操作,這是很多樣板。 應該不應該做類似的事情: (不編譯,因為&Person :: getName不是一元函數 ...
[英]Is possible to hide underlying containers with boost range?
我有一個圖結構,其中頂點可以有多種類型的邊。 頂點類型是多態的,它們必須能夠根據它們的類型“分類”邊並相應地存儲它們,但我希望能夠在不知道它們如何存儲的情況下檢索“基本級別”的所有邊。 我正在嘗試使用 boost::adaptors::transformed、boost::range::join ...
[英]Implementing a Boost range adaptor reversed_if
我經常遇到我的代碼中的情況,我希望根據運行時條件以直接或相反的順序迭代一個范圍。 這通常會產生如下代碼 要么 其中包含代碼重復(第一個)或效率低下(第二個)。 我一直在考慮一個假設的Boost范圍適配器,它會有條件地反轉一個范圍,這樣我就可以寫了 我可以自己實現它 ...
[英]“use algorithms; don’t write code” for multi-step logic?
這個問題讓我覺得“根本不要使用明確的循環! 使用STL / Boost算法“但仔細查看,我注意到有一個adjacent_difference ,並且accumulate和Boost在某處有一個zip , 它們根本不會堆疊在一起,但每個只能自己完成一次。 因此,以直接的方式使用它們需要 ...