我想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)
并且在初始化后不使用经典循环的所有这一行?提前致谢.
如果不使用某种样板或外部依赖(例如,请参阅其他答案),这是不可能的(作为单行)
双线使用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)