當一個const向量處理,下面不工作:標準庫中boost :: make_transform_iterator的等效參數是什麼?
const std::vector<std::string> v;
v.push_back("test"); // error: v cannot be modified
相反,你必須初始化上它的架構相同線路的載體。然而,即使有這樣的限制,boost::make_transform_iterator
可以輕鬆地做其推入v在另一個載體的元素的東西在這個例子中,convert
是返回輸入元素的變換版本一元函數:
auto beg = boost::make_transform_iterator(args.begin(), convert);
auto end = boost::make_transform_iterator(args.end(), convert);
const std::vector<const char*> vc { beg, end };
我查看了<iterator>
中的可用功能,但沒有看到相應的功能。它是簡單的丟失還是有一個原因,爲什麼標準庫沒有它?
如果有一個等價的,這很可能會被稱爲'的std :: make_transform_iterator'。沒有一個。 boost(和其他庫)中有許多有用的東西不在標準庫中。 – 2014-09-27 10:07:19
你試圖做什麼並不明顯。也許'const std :: vector v = {「hello」,「world」};'? –
2014-09-27 10:16:55
@Marc不,我希望'vc'避免被修改,因爲它會被'c_str()'填充,如果'vc'調整大小或者類似的東西,我讀過的可能導致失效的指針。所以我試圖在一行上初始化它,而不必在第二行使用std :: transform。 – user4085715 2014-09-27 10:20:11