使用向量查找公共元素的问题
problems working with vectors to find common element
我正试图找到两个向量之间的公共元素(song_list),在我的user.h文件中,我有两个向量,并试图在另一个类(help.cpp)中使用这个向量,但我做不到。请问我的代码怎么了?它没有运行,也不完全确定这是否是正确的方法。
user.h
#pragma once
#include <string>
#include <vector>
#include <string>
using namespace std;
class User
{
public:
User(void);
~User(void);
public:
struct user1
{
string name;
int age;
string song_list;
};
typedef vector <user1> u1;
struct user2
{
string name;
int age;
string song_list;
};
typedef vector <user2> u2;
};
帮助.cpp
#include "Help.h"
#include "User.h"
#include <iterator>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
int commonElements();
int commonElements(){
vector <user1> u1;
vector <user2> u2;
std::sort(u1.begin(), u1.end());
std::sort(u2.begin(), u2.end());
std::vector<string> common;
std::set_intersection(u1.begin(), u1.end(), u2.begin(), u2.end(),
std::back_inserter(common));
cout<<common<<endl;
}
到目前为止,这就是我的代码。用户姓名、年龄和歌曲列表的所有数据都在.txt文件中。
您似乎对类型与实例有些困惑。您正在创建一些单独的类型,其中(我很确定)您只需要两个实例。例如,(在我看来)您确实希望u1
和u2
是相同类型对象的向量。
user.h:
#pragma once
#include <string>
#include <vector>
#include <string>
using namespace std;
struct user {
string name;
int age;
vector<string> song_list;
};
help.cpp:
#include "Help.h"
#include "User.h"
#include <iterator>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <algorithm>
int commonElements(user &u1, user &u2) {
sort(u1.song_list.begin(), u1.song_list.end());
sort(u2.song_list.begin(), u2.song_list.end());
vector<string> common;
set_intersection(u1.song_list.begin(), u1.song_list.end(),
u2.song_list.begin(), u2.song_list.end(),
back_inserter(common));
for (auto const &song : common)
cout << song << "n";
#if 0
// alternatively, write the intersection directly to the stream:
set_intersection(u1.song_list.begin(), u1.song_list.end(),
u2.song_list.begin(), u2.song_list.end(),
ostream_iterator<string>(cout, "n"));
#endif
}
顺便说一句,人们普遍认为在标头中放入using namespace std;
是一个非常糟糕的想法。我之所以留下它,是因为它与手头的问题基本无关,但它真的应该改变。
相关文章:
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- 如何在C++向量中奇数元素前面加上值-1,我在使用insert函数时遇到了问题
- 使用运算符 [] 引用 std::vector 上最后一个元素时出现问题<>
- 关于比较两个无序数组并删除 a[] 中可以在 b[] 中找到的元素的问题
- 这个返回元素位置的基于循环的函数有什么问题?
- 缺少数组元素问题
- C++字符串问题-如何访问字符串元素
- std::p artition 的问题,用于分离小于枢轴的元素
- 我的选择排序代码是否存在导致它跳过数组中的元素的问题?
- 当索引位于末尾和空数组时,向数组插入元素时出现问题
- 创建 std::set 只复制一个元素,如何解决这个问题?
- 与 C++ 中一行中的用户输入数组元素相关的问题
- 当我向 vector<int *> 添加元素时,我遇到了一些问题
- 循环遍历向量<string>并保持每个元素"count"时出现问题
- 迭代列表以查找元素的出现.代码问题
- 检查是否所有 std::元组元素都满足条件 + 设计问题
- 元素计数问题
- 在 c++ 中从列表中擦除元素时出现问题
- 打印出列表元素问题
- 向量C ,获取向量的第二个元素有什么问题