#include <iostream>
using namespace std;
int main()
{
const char * nut[] = { "wloskie", "laskowe", "pistacje" };
const char * apple[] = { "Antonowka", "McIntosh" };
const char * blackberry[] = { "Malina", "Truskawka", "Jagoda", "Pozeczka", "Borowka" };
const char * fruit[] = { "Czereśnia", "Wiśnia", "Agrest" };
struct { const char **data; size_t size; } arr[] =
{
{ nut,sizeof(nut)/sizeof(*nut) },
{ apple,sizeof(apple)/sizeof(*apple) },
{ blackberry,sizeof(blackberry)/sizeof(*blackberry) },
{ fruit,sizeof(fruit)/sizeof(*fruit) },
};
for(size_t i=0;i<sizeof(arr)/sizeof(*arr);++i,cout<<"\n")
{
for(size_t j=0;j<arr[i].size;++j)
{
cout<<arr[i].data[j]<<" ";
}
}
return 0;
}
#define
na rozmiar potrzebujesz tylko jeden - ale lepiej unikać tego w C++
#include <iostream>
using namespace std;
#define SIZEOF(array) (sizeof(array)/sizeof(*array))
int main()
{
const char * nut[] = { "wloskie", "laskowe", "pistacje" };
const char * apple[] = { "Antonowka", "McIntosh" };
const char * blackberry[] = { "Malina", "Truskawka", "Jagoda", "Pozeczka", "Borowka" };
const char * fruit[] = { "Czereśnia", "Wiśnia", "Agrest" };
struct { const char **data; size_t size; } arr[] =
{
{ nut,SIZEOF(nut) },
{ apple,SIZEOF(apple) },
{ blackberry,SIZEOF(blackberry) },
{ fruit,SIZEOF(fruit) },
};
for(size_t i=0;i<SIZEOF(arr);++i,cout<<"\n")
{
for(size_t j=0;j<arr[i].size;++j)
{
cout<<arr[i].data[j]<<" ";
}
}
return 0;
}
W sumie jeszcze lepiej użyć vector
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
static const vector<string> nut { "wloskie", "laskowe", "pistacje", };
static const vector<string> apple = { "Antonowka", "McIntosh", };
static const vector<string> blackberry = { "Malina", "Truskawka", "Jagoda", "Pozeczka", "Borowka", };
static const vector<string> fruit = { "Czereśnia", "Wiśnia", "Agrest", };
static const vector<vector<string>> arr = { nut,apple,blackberry,fruit, };
for(size_t i=0;i<arr.size();++i,cout<<"\n")
{
for(size_t j=0;j<arr[i].size();++j)
{
cout<<arr[i][j]<<" ";
}
}
return 0;
}
Bo można użyć foreach
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
static const vector<string> nut { "wloskie", "laskowe", "pistacje", };
static const vector<string> apple { "Antonowka", "McIntosh", };
static const vector<string> blackberry { "Malina", "Truskawka", "Jagoda", "Pozeczka", "Borowka", };
static const vector<string> fruit { "Czereśnia", "Wiśnia", "Agrest", };
static const vector<vector<string>> arr { nut,apple,blackberry,fruit, };
for(auto row : arr)
{
for(auto cell : row)
{
cout<<cell<<" ";
}
cout<<endl;
}
return 0;
}
Oraz nie deklarować tablic pośredfnich:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
static const vector<vector<string>> arr
{
{ "wloskie", "laskowe", "pistacje", },
{ "Antonowka", "McIntosh", },
{ "Malina", "Truskawka", "Jagoda", "Pozeczka", "Borowka", },
{ "Czereśnia", "Wiśnia", "Agrest", },
};
for(auto row : arr)
{
for(auto cell : row)
{
cout<<cell<<" ";
}
cout<<endl;
}
return 0;
}