我有幾個(gè)std::vector,長度都一樣。我想對這些向量之一進(jìn)行排序,并將相同的變換應(yīng)用于所有其他向量。有一個(gè)整齊的方法嗎?(最好使用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 回答

qq_笑_17
TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超7個(gè)贊
將值放入Boost Multi-Index容器中,然后進(jìn)行迭代以按所需順序讀取值。如果需要,您甚至可以將它們復(fù)制到另一個(gè)向量。

炎炎設(shè)計(jì)
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
您可能可以定義一個(gè)自定義的“外觀”迭代器,該迭代器可以滿足您的需求。它將迭代器存儲到所有向量,或者從第一個(gè)向量的偏移量導(dǎo)出除第一個(gè)向量以外的所有向量的迭代器。棘手的部分是迭代器取消引用的內(nèi)容:想像boost :: tuple之類的東西,并巧妙地使用boost :: tie。(如果您想擴(kuò)展這個(gè)想法,可以使用模板遞歸地構(gòu)建這些迭代器類型,但您可能永遠(yuǎn)不想寫下它的類型-因此,您需要c ++ 0x auto或包裝函數(shù)來進(jìn)行取范圍的排序)
- 4 回答
- 0 關(guān)注
- 1738 瀏覽
添加回答
舉報(bào)
0/150
提交
取消