我有幾個std::vector,長度都一樣。我想對這些向量之一進行排序,并將相同的變換應用于所有其他向量。有一個整齊的方法嗎?(最好使用STL或Boost)?一些載體的持有intS和他們中的一些std::string秒。偽代碼:std::vector<int> Index = { 3, 1, 2 };std::vector<std::string> Values = { "Third", "First", "Second" };Transformation = sort(Index);Index is now { 1, 2, 3};... magic happens as Transformation is applied to Values ...Values are now { "First", "Second", "Third" };
4 回答
炎炎設計
TA貢獻1808條經驗 獲得超4個贊
您可能可以定義一個自定義的“外觀”迭代器,該迭代器可以滿足您的需求。它將迭代器存儲到所有向量,或者從第一個向量的偏移量導出除第一個向量以外的所有向量的迭代器。棘手的部分是迭代器取消引用的內容:想像boost :: tuple之類的東西,并巧妙地使用boost :: tie。(如果您想擴展這個想法,可以使用模板遞歸地構建這些迭代器類型,但您可能永遠不想寫下它的類型-因此,您需要c ++ 0x auto或包裝函數來進行取范圍的排序)
- 4 回答
- 0 關注
- 1749 瀏覽
添加回答
舉報
0/150
提交
取消
