似乎在这里工作得很好:
#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 frob plugh
以上是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] << ' ';
}
}
可以想象,您需要为每个句子假设相同数量的单词。如果您不希望这样,您可以创建一个新的数据结构,该结构还将每个句子的单词量与句子向量一起保存。
成为受虐狂是一项很好的练习,但出于实际目的,您可能应该切换到向量,以便更轻松地迭代单词。