如何在一行c ++中递增对值的同时初始化对的向量

Bug*_*tGG 0 c++ stl

我想pair<char, int>使用STL 初始化一行中的向量.从我发现以下的工作,但只能初始化具有相同值的每个元素.

vector<pair<char, int>> myVec (26, std::make_pair('a', -1));
Run Code Online (Sandbox Code Playgroud)

有没有办法初始化它,可能使用lamda函数或其他东西,这样char元素将是增量的,如:

(a,-1) (b,-1) (c,-1) etc...
Run Code Online (Sandbox Code Playgroud)

并且在初始化后不使用经典循环的所有这一行?提前致谢.

Som*_*ken 5

如果不使用某种样板或外部依赖(例如,请参阅其他答案),这是不可能的(作为单行)

双线使用std::generate:

std::vector<std::pair<char, int>> v(26);
std::generate(v.begin(), v.end(), [] { static char c = 'a'; return std::make_pair(c++, -1);} );
Run Code Online (Sandbox Code Playgroud)