如何打印出char ** vector的内容

时间:2013-02-16 05:49:09

标签: c++ vector

SO,

我希望打印出矢量的内容;我已经尝试过迭代器,但这不是很好

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

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

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

但我无法让它发挥作用。

感谢。

1 个答案:

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

你可以想象,你需要为每个句子假设相同数量的单词。如果您不想这样,您可以创建一个新的数据结构,该结构还包含每个句子的单词数量以及句子向量。

作为一个受虐狂是一个很好的练习,但出于实际目的,你应该切换到向量,这样你就可以更容易地迭代这些单词。