1

私はまだ C++ のロープを学んでいます。

ベクトルの特定の要素を別のベクトルに移動したい (ベクトルが unordered_set に含まれているかどうかに基づいて)。

ただし、ベクター クラスに参照変数を受け取る挿入メソッドがないというエラーが表示され続けます。具体的には、このエラー:

In file included from TorrentTrackerCommManager.h:10:0,
                 from TorrentTrackerCommManager.cpp:1:
PeerList.h: In member function ‘void PeerList::addPeers(std::vector<Peer*>)’:
PeerList.h:51:24: error: no matching function for call to ‘std::vector<Peer>::insert(Peer&)’
      peerList.insert(*p);

私が使用しているコードは次のとおりです。

class PeerList {

    private:

        /* List holding all of the Peer objects. */
        std::vector<Peer> peerList;

        /* Set holding all of the Peer objects. */
        std::unordered_set<Peer, PeerHash> peerSet;

    public:

         void addPeers(std::vector<Peer *> newPeers) {

            std::vector<Peer *>::iterator it;
            for (it = newPeers.begin(); it != newPeers.end(); ++it) {

                Peer p = **it;

                //If we don't already have that peer
                if (peerSet.find(p) != peerSet.end()) {

                    //add him
                    peerList.insert(p);
                    peerSet.insert(p);
                }
            }
        }
  }
4

3 に答える 3

1

ベクトルの場合、必要です

peerList.push_back(p);

cppreference.comで、コンテナー メソッドに関する優れた概要表を見つけることができます。

于 2013-10-29T22:33:48.757 に答える