std::initializer_list
具有成员函数size,该函数返回初始化程序列表中的元素数量。
考虑到[]
没有std::initializer_list
运算符,并且用户不想使用for-loop
来访问每个子列表的大小:
用户如何从std::initializer_list
获得内部std::initializer_list<std::initializer_list>
的大小。
例如,从下面的示例中,您能否告诉我用户如何访问第一个嵌套的initializer_list {1, 2, 3}
的大小?
#include <iostream>
#include <string>
int main()
{
std::initializer_list<std::initializer_list<int>> a = { {1, 2, 3}, {2, 3, 4} };
std::cout << a.size() << std::endl; // Provides = 2
// Now I want to access the size of the first nested std::initializer_list:
// std::cout << a[0].size() << std::endl; // Does not compile
return 0;
}
答案 0 :(得分:3)
您可以利用std::initializer_list::begin
返回指向初始化列表中第一个元素的指针。
例如
std::cout << a.begin()->size() << std::endl; // Provides = 3
std::cout << (a.begin() + 1)->size() << std::endl; // Provides = 3
答案 1 :(得分:1)
您可以这样做:
for(const auto& ilist: a)
std::cout << ilist.size() << std::endl; // Compiles
请参见 Demo 。
如果需要,可以在for
循环中将大小分配给不同的变量。