C++ 搜索集合

C++ 搜索集合,c++,iterator,traversal,set,C++,Iterator,Traversal,Set,我在试着穿过一组弦时有点困难。用于向量和数组的方法在这里不起作用;我尝试了许多方法来遍历一个集合,包括调用迭代器,但编译器不买账。我在网上看过,但没有一个答案是正确的 域.h #ifndef DOMAIN_H_ #define DOMAIN_H_ #include <sstream> #include <string> #include <set> using namespace std; class Domain { public: Domain();

我在试着穿过一组弦时有点困难。用于向量和数组的方法在这里不起作用;我尝试了许多方法来遍历一个集合,包括调用迭代器,但编译器不买账。我在网上看过,但没有一个答案是正确的

域.h

#ifndef DOMAIN_H_
#define DOMAIN_H_
#include <sstream>
#include <string>
#include <set>

using namespace std;

class Domain {
public:
Domain();
virtual ~Domain();
void add(string added_domain);

    string toString();

private:
  set<string> the_domain;
  };

#endif /* DOMAIN_H_ */

Domain.cpp
    include "Domain.h"
    include <string>
    include <set>

Domain::Domain() {
    // TODO Auto-generated constructor stub

}

Domain::~Domain() {
    // TODO Auto-generated destructor stub
}

void Domain::add(string added_domain)
{
    the_domain.insert(added_domain);
}

string Domain::toString()
{
    // insert here
}
\ifndef域\u H_
#定义域_
#包括
#包括
#包括
使用名称空间std;
类域{
公众:
域();
虚拟域();
void add(字符串添加到域中);
字符串toString();
私人:
设置_域;
};
#endif/*域*/
Domain.cpp
包括“Domain.h”
包括
包括
域::域(){
//TODO自动生成的构造函数存根
}
域::~Domain(){
//TODO自动生成的析构函数存根
}
无效域::添加(字符串已添加到\u域)
{
_域。插入(添加了_域);
}
字符串域::toString()
{
//在此插入
}
希望我不用再问这个问题了。谢谢你的帮助

您可以使用迭代器:

bool Domain::searchForString(const string &str)
{
  return(the_domain.find(str) != the_domain.end());
}
std::set<std::string> strs;
for( std::set<std::string>::const_iterator it = strs.begin(); it != strs.end; ++i ) { 
   std::cout << *it << std::endl;
}
std::设置str;
对于(std::set::const_迭代器it=strs.begin();it!=strs.end;++i){
std::cout您可以使用迭代器:

std::set<std::string> strs;
for( std::set<std::string>::const_iterator it = strs.begin(); it != strs.end; ++i ) { 
   std::cout << *it << std::endl;
}
std::设置str;
对于(std::set::const_迭代器it=strs.begin();it!=strs.end;++i){
std::cout
#包括
字符串域::toString()常量{
std::ostringstream ss;
用于(常数自动和s:strs){
ss
#包括
字符串域::toString()常量{
std::ostringstream ss;
用于(常数自动和s:strs){

ss当然,你可以使用迭代器遍历一个集合。你可以显示你尝试的迭代器代码和错误消息,而不是一堆空存根吗?
find
“希望我不需要再问这个问题了”…再问一遍??当然可以使用迭代器遍历集合。不如显示您尝试的迭代器代码和错误消息,而不是一堆空存根?查找
有什么问题?“希望我不需要再问了”。再问一遍??
string toString()
可能与写入屏幕无关…@MooingDuck似乎合乎逻辑,对其进行了一点更改。
string toString()
可能与写入屏幕无关…@MooingDuck似乎合乎逻辑,对其进行了一点更改。
struct out { void operator()( const std::string &str ) { std::cout << str << std::endl; }
std::set<std::string> strs;
std::foreach( strs.begin(), strs.end(), out() );
std::set<std::string> strs;
for( const auto &str: strs ) {
   std::cout << str << std::endl;
}
#include <sstream>

string Domain::toString() const {
    std::ostringstream ss;

    for (const auto& s : strs) {
        ss << s << std::endl;
    }

    return ss.str();
}