[英]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;
}
}
}
您的程序可能運行良好,我想您正在將return
和cout
混合在一起以將其實際打印到控制台,當前您不打印任何內容,而只是將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.