簡體   English   中英

c ++:類實例的向量,按類成員值搜索失敗

[英]c++: vector of class instances, search by class member values failed

我有以下程序,其中定義了Point類的向量。 我將五個Point實例及其ID推入此向量。 然后,我嘗試按ID進行搜索,但未獲得預期的結果。 以下程序未返回任何內容。

#include<iostream>
#include<vector>
using namespace std;

class Point {
private:
    int id;
public:
    Point(){}
    void setId(int k){ id=k; }
    int GetId() { return id; }
};

int main()
{
    vector<Point> datasets;
    for(int i=0; i< 5; ++i){
        Point temp;
        temp.setId(i);
        datasets.push_back(temp);
    }

    for(int i=0;i<5;i++){
        if (datasets[i].GetId() ==4){
            return i;
        }
    }
}

您的程序可能運行良好,我想您正在將returncout混合在一起以將其實際打印到控制台,當前您不打印任何內容,而只是將i返回到OS,因為您在main使用return ,使其成為狀態碼。

要查看輸出,請使用cout

#include<iostream>
#include<vector>
using namespace std;
class Point{
        private:
                int id;
        public:
                Point(){}
                void setId(int k){id=k;}
                int GetId(){return id;}
};


int main()
{
        vector<Point> datasets;
        for(int i=0; i< 5; ++i){
        Point temp;
        temp.setId(i);
        datasets.push_back(temp);
        }
        for(int i=0;i<5;i++){
                if (datasets[i].GetId() ==4){
                        cout << "i is : " << i << endl;
                        break;
                }
        }
}

編輯以回答OP的評論:

使用: vector<Point> datasets(5);

您沒有打印任何東西,因為您在for循環后放置了return i

確定您不會得到任何結果

#include<iostream>
#include<vector>
using namespace std;
class Point{
        private:
                int id;
        public:
                Point(){}
                void setId(int k){id=k;}
                int GetId(){return id;}
};



 int main()
    {
            vector<Point> datasets;
            for(int i=0; i< 5; ++i){
            Point temp;
            temp.setId(i);
            datasets.push_back(temp);
            }
            for(int i=0;i<5;i++){
                    if (datasets[i].GetId() ==4){
                            cout<<i<<endl;
                    }
            }
 system("pause");
 return 0;
}

您可以使用: datasets.insert(datasets.begin()+i,temp);

而不是datasets.push_back(temp);

在向量類的索引i處添加元素時更加靈活

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM