SO,
我希望打印出矢量的内容;我已经尝试过迭代器,但这不是很好
for(vector<char**>::const_iterator i=myVec.begin();i!=myVec.end();i++) {
cout<<**i<<endl;
}
这不起作用,我想的是我需要两个迭代器(上面的一个将是外部的,内部的就是这样:
for(vector<char*>::const_iterator j=???;j!=??;j++) {....}
但我无法让它发挥作用。
感谢。
答案 0 :(得分:1)
似乎在这里工作得很好:
#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] << ' ';
}
}
你可以想象,你需要为每个句子假设相同数量的单词。如果您不想这样,您可以创建一个新的数据结构,该结构还包含每个句子的单词数量以及句子向量。
作为一个受虐狂是一个很好的练习,但出于实际目的,你应该切换到向量,这样你就可以更容易地迭代这些单词。