vector<_0843杨晓慧>::iterator p=i.v.begin();是什么意思
时间: 2024-03-14 16:48:57 浏览: 145
这行代码是在定义一个名为 `p` 的迭代器,它指向一个名为 `v` 的 `_0843杨晓慧` 类型对象的第一个元素。
具体来说,`vector<_0843杨晓慧>::iterator` 是定义了一个迭代器类型,它可以指向 `_0843杨晓慧` 类型的 `vector` 对象中的元素。而 `i.v` 表示访问 `i` 对象中的名为 `v` 的成员变量,它是一个 `vector<_0843杨晓慧>` 类型的对象。`begin()` 是 `vector` 类中的一个方法,它返回指向第一个元素的迭代器对象。因此,这行代码定义了一个迭代器 `p`,它指向对象 `i.v` 中的第一个元素。
相关问题
完善一下vector<_0843杨晓慧>::iterator p=i.v.begin();
好的,进一步解释一下这段代码的含义:
在C++中,vector是一个动态数组,可以动态地增加或减少数组的大小。vector容器提供了许多成员函数来方便地访问、操作数组中的元素,其中之一就是begin()函数。
vector<_0843杨晓慧>::iterator是vector容器的一个迭代器类型,表示指向vector容器中元素的指针,可以通过迭代器来访问vector容器中的元素。
i是一个vector<_0843杨晓慧>类型的对象,".v"是该对象的一个成员变量,表示i对象所表示的vector容器。
".begin()"是vector容器的成员函数,返回一个指向vector容器中第一个元素的迭代器。
因此,这段代码的含义是:定义了一个迭代器p,将i对象所表示的vector容器中第一个元素的迭代器赋值给p,这样就可以通过迭代器p来访问vector容器中的元素。可以使用类似于*p的方式来访问p所指向的元素,即i.v.begin()所表示的第一个元素。
完善 int a,b; vector<_0843杨晓慧>::iterator p=i.v.begin(); cout<<"学号按1,姓名请按2."; cin>>a; if(a==1){cout<<"输入学号:"; } if(a==2){cout<<"输入要姓名:";} cin >> b; if(b==p->num[N]||b==p->name){cout<< setiosflags(ios::left)<<setw(12)<<p->num[N]<<setw(
12)<<p->name<<setw(8)<<p->score[0]<<setw(8)<<p->score[1]<<setw(8)<<p->score[2]<<setw(8)<<p->score[3]<<endl; }
这段代码中存在一些问题,比如变量a,b未进行初始化,未定义N的值等等。建议修改后的完整代码如下:
```c++
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
struct _0843杨晓慧 {
string num[20];
string name;
int score[4];
};
int main() {
int a = 0, b = 0;
vector<_0843杨晓慧> i(1);
vector<_0843杨晓慧>::iterator p = i.begin();
cout << "学号按1,姓名请按2: ";
cin >> a;
if (a == 1) {
cout << "输入学号: ";
cin >> p->num[0];
}
else if (a == 2) {
cout << "输入要姓名: ";
cin >> p->name;
}
cout << "输入要查询的成绩: ";
cin >> b;
if (b == stoi(p->num[0]) || b == p->name) {
cout << setiosflags(ios::left) << setw(12) << p->num[0] << setw(12) << p->name << setw(8) << p->score[0] << setw(8) << p->score[1] << setw(8) << p->score[2] << setw(8) << p->score[3] << endl;
}
return 0;
}
```
阅读全文