0

文字列のセットを通り抜けるのに少し苦労しています。ベクトルと配列に使用されるメソッドは、ここでは機能しません。イテレータを呼び出すなど、セットをトラバースしようとするさまざまな方法を試しましたが、コンパイラはそれを購入しません。私はオンラインで調べましたが、答えはまったく正しくないようでした。

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
}

うまくいけば、私はこれをもう一度尋ねる必要はありません。助けてくれてありがとう!

4

3 に答える 3

2
bool Domain::searchForString(const string &str)
{
  return(the_domain.find(str) != the_domain.end());
}
于 2013-02-23T03:22:19.600 に答える
1
#include <sstream>

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

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

    return ss.str();
}
于 2013-02-23T03:46:58.337 に答える
1

イテレータを使用できます:

std::set<std::string> strs;
for( std::set<std::string>::const_iterator it = strs.begin(); it != strs.end; ++i ) { 
   std::cout << *it << std::endl;
}

ブースト 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::set の代わりに同じコードを使用するだけでなく、他の std コンテナーも使用できます。

于 2013-02-23T03:36:41.393 に答える