Вы можете использовать структурированную привязку только для хранилища, расположение которого можно определить во время компиляции, т.е. привязать его к массиву или хранилищу, подобному классу. Хранилище данных вектора - это динамическое c, вы не можете привязаться к его содержимому, состоящему из смежных элементов. Вы можете привязать этот список к элементам существующего типа, например, если вектор содержит пару, кортеж или любую подобную структуру.
#include <string>
#include <vector>
#include <tuple>
#include <iostream>
int main()
{
std::vector<std::tuple<int,int, std::string>>
v = {{1,3,"aa"},{3,5,"bb"}};
for(auto& [a,b,s] : v)
{
std::cout << a << b << s << std::endl;
}
return 0;
}