我正在尝试获得相同的数字,然后重复将其写入不同的流函数void lygink
void lygink (int s,int e,int n,int a , int m,info K[],int &sk)
{
a=0;
for (int i=1; i<=m; i++)
{
if(K[i].j==K[i].l) ;
else {
e=K[i].j;
s=K[i].j;
if (e==s) {
cout << e<< endl;
}
}
}
}
整个代码如下:
#include <iostream>
#include <fstream>
#include <iomanip>
using namespace std;
struct info
{
int jurg,lin,k;
};
void skaityk(int &n,int &m,int lin, int jurg, info K[])
{
{
ifstream fd ;
fd.open ("U2duom.txt");
fd >> n >> m;
for (int i=1; i<=n; i++)
{
fd>>K[i].lin ;
cout<<fixed<<setprecision(2)<<" " <<K[i].lin;
}
cout << " "<< endl;
for (int i=1; i<=m; i++)
{
fd>>K[i].jurg ;
cout<<fixed<<setprecision(2)<<" " <<K[i].jurg;
}
cout << " "<< endl;
fd.close();
}
}
void lygink (int s,int e,int n,int a , int m,info K[],int &k)
{
a=0;
for (int i=1; i<=m; i++)
{
if(K[i].jurg==K[i].lin) ;
else {
e=K[i].jurg;
s=K[i].jurg;
if (e==s) {
cout << e<< endl;
}
}
}
}
int main()
{
int n,e,m,a,lin,jurg,s,k;
s=22;
info K[500];
skaityk(n, m,lin, jurg, K);
lygink(s,e,n,a,m,K,k);
int i;
return 0;
}
文件为
8 14
5 6 6 9 14 25 8 26
5 20 6 7 13 7 9 10 12 20 15 16 21 5
它应该只给我7和20,但给出的所有不一样,我不知道如何提取那些数字,我需要消除那些不重复的数字或以某种方式获得重复的数字
#include <iostream>
#include <set>
#include <sstream>
int main() {
std::istringstream input(R"(
8 14
5 6 6 9 14 25 8 26
5 20 6 7 13 7 9 10 12 20 15 16 21 5
)");
std::set<int> numbers;
int n;
while (input >> n)
if (!numbers.insert(n).second)
std::cout << n << "\n";
}
这产生的输出不仅仅是7和20,但是人工检查似乎可以确认它说的实际上是重复的。
std::unordered_set<int> unique(std::vector v) {
std::sort(std::begin(v), std::end(v));
auto it = std::adjacent_find(std::begin(v), std::end(v));
std::unordered_set<int> ret;
while (it != std::end(v)) {
ret.insert(*it);
std::advance(it, 2);
it = std::adjacent_find(it, std::end(v));
}
return ret;
}