Метод index
Метод index класса variant возвращает индекс
альтернативы, которая в данный момент хранится в объекте
variant. Индекс соответствует позиции типа в списке
шаблонных параметров класса variant, начиная с нуля.
Метод не принимает параметров и возвращает значение типа
size_t. Если объект variant находится в
состоянии valueless_by_exception, метод возвращает
variant_npos.
Синтаксис
var.index()
Пример
Давайте создадим объект variant, способный хранить
int, double и string, и проверим
индекс для каждого хранимого значения:
#include <iostream>
#include <variant>
#include <string>
using namespace std;
int main()
{
variant<int, double, string> var;
var = 42;
cout << var.index() << endl;
var = 3.14;
cout << var.index() << endl;
var = "abcde";
cout << var.index() << endl;
return 0;
}
Результат выполнения кода:
0
1
2
Пример
Давайте используем метод index вместе с методом
get для получения значения из variant:
#include <iostream>
#include <variant>
#include <string>
using namespace std;
int main()
{
variant<int, double, string> var = "abcde";
if (var.index() == 2) {
cout << get<string>(var) << endl;
}
return 0;
}
Результат выполнения кода:
"abcde"
Пример
Давайте проверим, что возвращает метод index для
варианта по умолчанию, инициализированного первым типом:
#include <iostream>
#include <variant>
#include <string>
using namespace std;
int main()
{
variant<int, double, string> var;
cout << var.index() << endl;
return 0;
}
Результат выполнения кода:
0
Смотрите также
-
класс
variant,
который хранит значение одного из нескольких типов -
метод
get,
который возвращает значение из variant -
метод
get_if,
который возвращает указатель на значение из variant -
метод
holds_alternative,
который проверяет, хранится ли в variant указанный тип