0

所以,

我正在寻找打印出向量的内容;我已经为它尝试了一个迭代器,但这并不好

for(vector<char**>::const_iterator i=myVec.begin();i!=myVec.end();i++) {
   cout<<**i<<endl;
}

这不起作用,我在想我将需要两个迭代器(上面的一个将是外部的,而内部的将是这样的:

  for(vector<char*>::const_iterator j=???;j!=??;j++) {....}

但我无法让它工作。

谢谢。

4

1 回答 1

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] << ' ';
    }
}

可以想象,您需要为每个句子假设相同数量的单词。如果您不希望这样,您可以创建一个新的数据结构,该结构还将每个句子的单词量与句子向量一起保存。

成为受虐狂是一项很好的练习,但出于实际目的,您可能应该切换到向量,以便更轻松地迭代单词。

于 2013-02-16T06:52:27.673 回答