ここでうまくいくようです:
#include <iostream>
#include <vector>
int main()
{
const char* sentence1[] = {"foo", "bar", "baz"};
const char* sentence2[] = {"xyzzy", "frob", "plugh"};
std::vector<const char**> vec = {sentence1, sentence2};
for (auto i : vec) {
for (size_t w = 0; w < 3; ++w) {
std::cout << i[w] << ' ';
}
}
std::cout << '\n';
}
これは印刷されます:
foo bar baz xyzzy フロブ プラグ
上記はC++11です。それがない場合は、ベクトルの初期化とfor
ループを変更する必要があります。
std::vector<const char**> vec;
vec.push_back(sentence1);
vec.push_back(sentence2);
for (std::vector<const char**>::iterator it = vec.begin();
it != vec.end(); ++it)
{
for (size_t w = 0; w < 3; ++w) {
std::cout << (*it)[w] << ' ';
}
}
ご想像のとおり、各文で同じ量の単語を想定する必要があります。それが望ましくない場合は、文のベクトルと一緒に文ごとの単語数も保持する新しいデータ構造を作成できます。
マゾヒストであることは良い練習になりますが、実際にはベクトルに切り替えて、単語をより簡単に反復できるようにする必要があります。