c++超简单问题.

来源:百度知道 编辑:UC知道 时间:2024/07/03 00:12:47
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;

int main()
{
ifstream in("aaa.txt");
vector<int> s;
for(int a; in>>a; )
s.push_back(a);
int pair=0;
for(int i=0; i<s.size()-1; ++i)
for(int j=i+1; j<s.size(); ++j)
if(s[i]==s[j])
pair++;
cout << pair<<"\n";
}

这段代码中,for(int i=0; i<s.size()-1; ++i) 里为什么s.size()要减1?
for(int i=0; i<s.size()-1; ++i)
for(int j=i+1; j<s.size(); ++j)
if(s[i]==s[j])

能说详细点吗?为什么下面的又不用减1?

vector下标从0开始.

这样,程序功能是找出aaa.txt里所有配对的数字配对数.

那么一个数字不能和自己比较.
比如一共有5个元素,下标从0到4

i从0只需循环到3即可,因为循环到4以后只能和自己比较,这没有意义,所以只需循环到size()-2(程序中用的是"<"号)
j则需从i+1一直循环到vector的末尾,即size()-1(程序中是"<"号)