在集合中搜索

Searching through a set

本文关键字:搜索 集合      更新时间:2023-10-16

我在尝试通过一组字符串时遇到了一些困难。用于向量和数组的方法在此不起作用;我尝试了很多方法来遍历一个集合,包括调用迭代器,但编译器不买账。我在网上看了看,但似乎没有一个答案是正确的。

域.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
}

希望我不用再问这个了。谢谢你的帮助!

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

你可以使用boost foreach:

std::set<std::string> strs;
BOOST_FOREACH( const std::string &str, strs ) {
   std::cout << str << std::endl;
}

您可以使用std::foreach

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() );

你可以使用c++11测距循环:

std::set<std::string> strs;
for( const auto &str: strs ) {
   std::cout << str << std::endl;
}

您可以使用其他std容器,而不仅仅是它们具有相同的代码,而不是std::set。

#include <sstream>
string Domain::toString() const {
    std::ostringstream ss;
    for (const auto& s : strs) {
        ss << s << std::endl;
    }
    return ss.str();
}