我执行了这个程序,该程序假设将一对字符串,int保存在一个向量上,并在向量上打印最大数目的字符串,但是当我尝试找到此字符串时,什么也没出现,所以我尝试在向量上打印int的所有值,并且尽管发现向量中的最大值(最大值)为10,但将所有值打印为0。请有人可以解释它是否发生以及如何访问这些值。
#include <iostream>
#include <utility>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
typedef vector<pair<string,int>> vsi;
bool paircmp(const pair<string,int>& firste,const pair<string,int>& seconde );
int main(int argc, char const *argv[]) {
vsi v(10);
string s;
int n,t;
cin>>t;
for (size_t i = 0;i < t;i++) {
for (size_t j = 0; j < 10; j++) {
cin>>s>>n;
v.push_back(make_pair(s,n));
}
sort(v.begin(),v.end(),paircmp);
int ma=v[v.size()-1].second;
cout<<ma<<endl;
for (size_t j = 0; j < 10; j++) {
cout << v.at(j).second <<endl;
if(v[j].second == ma)
cout<<v[j].first<<endl;
}
}
return 0;
}
bool paircmp(const pair<string,int>& firste,const pair<string,int>& seconde ){
return firste.second < seconde.second;
}
这条线
vsi v(10);
创建一个std::vector
由10个默认构造std::pair<std::string, int>
的填充的。也就是说,一个空字符串和零。
然后push_back
,您可以将其他值添加到向量中,但是它们恰好排在那十个初始元素之后,可能是因为它们中都带有正int
s。
因此,打印first
前十个元素的成员将打印十个空字符串。
我可以从您提供的内容中猜到这一切。我不知道您要用这段代码来完成什么。
尝试类似的东西
for (const auto& item : v)
{
std::cout << "{ first: '" << item.first << "', "
<< "second: " << item.second << " }\n";
}
打印向量的所有元素v
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句