2012-08-10 78 views

回答

7

你的问题是什么?

typedef std::vector<std::pair<std::string, bool> > vector_type; 
for (vector_type::const_iterator pos = myvec.begin(); 
    pos != myvec.end(); ++pos) 
{ 
    std::cout << pos->first << " " << pos->second << std::endl; 
} 

或者您可以使用std::for_each与一些函子。

+1

重载不起作用:两个操作数类型都在'std'命名空间中,所以重载需要放在'std'命名空间中。但是,你不能在'std'命名空间中声明重载。 – 2012-08-10 18:29:55

+0

@JamesMcNellis你是对的。编辑。 – ForEveR 2012-08-10 18:33:47

+0

您将'typedef'定义为'vector'并且定义了'const_iterator'当我改变了我的代码时,我得到了错误,因为我使用了'find_if'。 – PersianGulf 2012-08-10 18:34:53

2
  1. 创建迭代器,指向向量的第一个元素(语法:Container::iterator iter = myContainer.begin())在for -loop
  2. ,通过所有的元素迭代(iterator具有operator++;结束条件是 - 检查是否迭代器有达到你的容器一样的enditer != myContainer.end()
  3. 迭代器是一样的指针,以达到它的成员,请使用operator->
  4. std::pair就像一个结构有两个字段 - firstsecond,因此您可以打印矢量的元素,如:iter->firstiter->second
相关问题