Code Bye

求指导for_each怎么样获取下标,如下是本人写的一个题目

#include<iostream>
#include<string>
#include<vector>
#include<iterator>
#include<algorithm>
using namespace std;
struct Pizz
{
string name;
double zhijin;
double zhongliang;
};
typedef vector<Pizz> vp;
void show(Pizz P);
void input(vp &p);
int main()
{
vp p;
input(p);
for_each(p.begin(), p.end(), show);
return 0;
}
void input(vp &p)
{
string name;
double zhongliang;
double zhijing;
char is;
while (1)
{
cout << “请输入披萨的公司 : “;
cin >> name;
cout << “请输入披萨的直径 : “;
cin >> zhijing;
cout << “请输入披萨的重量 : “;
cin >> zhongliang;
p.push_back({name,zhijing,zhongliang});
cout << “请选择能否继续输入,继续请输入Y(Yes),否则输入N(No)” << endl;
cin >> is;
if (is == “Y”)
continue;
else
break;
}
}
void show(Pizz P)
{
cout << “公司是 ” << P.name << endl;
cout << “直径是 ” << P.zhijin << endl;
cout << “重量是 ” << P.zhongliang << endl;
cout << endl;
}
本人想在show()里进行编号,就是在用for_each进行遍历的时候进行编号1,2,3,4,这样的
解决方案

5

void show(const vp& P, size_t index)
{
    for(size_t i = 0; i < P.size(); i++)
    {
      cout << "index=" << index <<endl;
      cout << "公司是 " << P[i].name << endl;
      cout << "直径是 " << P[i].zhijin << endl;
      cout << "重量是 " << P[i].zhongliang << endl;
      cout << endl;
    }
}

5

//for_each(p.begin(), p.end(), show);
//=>
show(vp);
//...
//...
void show(const vp& ps)
{
    for(size_t i = 0; i < ps.size(); i++)
    {
      cout << "编号是 " << i << endl;
      cout << "公司是 " << P[i].name << endl;
      cout << "直径是 " << P[i].zhijin << endl;
      cout << "重量是 " << P[i].zhongliang << endl;
      cout << endl;
    }
}

10

引用:
Quote: 引用:
void show(const vp& P, size_t index)
{
    for(size_t i = 0; i < P.size(); i++)
    {
      cout << "index=" << index <<endl;
      cout << "公司是 " << P[i].name << endl;
      cout << "直径是 " << P[i].zhijin << endl;
      cout << "重量是 " << P[i].zhongliang << endl;
      cout << endl;
    }
}

您好,本人按照您写的,但是编译的时候报错了,错误如下:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2198 “void (__cdecl *)(const vp &,size_t)”: 用于调用的参数太少 4-7 d:\program files\microsoft visual studio 14.0\vc\include\algorithm 24
用的是VS2015,还有本人想问问 您的size_t是啥类型的呢?抱歉,新手到目前为止,一直没见过这个类型。

size_t不好理解的话,改成int型好了, i < (int) P.size(). 看起来就明白了。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明求指导for_each怎么样获取下标,如下是本人写的一个题目