我有以下程序,我在其中定义了Point类的向量。我用他们的ID推入了这个向量五个Point实例。然后我尝试按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;
}
}
}
答案 0 :(得分:1)
你的程序可能运行得很好,我认为你将return
和cout
混合在一起实际打印到控制台,目前你没有打印任何东西而你只是将i
返回给操作系统,因为您在main
中使用了返回,使其成为状态代码。
要查看输出,请使用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);
答案 1 :(得分:1)
你不打印任何东西,因为你在for循环之后放回了
确定你不会得到任何结果
#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处添加元素提供更大的灵活性