如何计算两个数组的交集值
how to compute value of intersection of two arrays?
我能够编写一个函数来打印出两个数组的交集。但是,我正在尝试获取交叉点成员的值。
如果我们的最后一个交集是{6, 12}
我应该返回 2 作为值,因为我有 2 个成员。我的返回值是 1,我不知道我做错了什么。
int main()
{
int data1[] = { 3, 6, 9, 12};
int data2[] = { 2, 4, 6, 8, 10, 12 };
int result[] = {};
size_t length1 = sizeof(data1)/sizeof(int);
size_t length2 = sizeof(data2)/sizeof(int);
size_t resultMax= 0;
int i =0;
int j =0;
while (i < length1 && j < length2)
{
if (data1[i] < data2[j])
{
i++;
}
else if (data2[j] < data1[i])
{
j++;
}
else if (data1[i] == data2[j])
{
result[i] = data1[i];
cout << "valor : " << result[i] << endl; // output is 6 and 12
i++;
j++;
resultMax = sizeof(result[i])/sizeof(int);
}
}
cout << "Final Size: "<< resultMax; //output is 0
return resultMax;
}
使用 std::vector 而不是 array。
# include<iostream>
# include<vector>
using namespace std;
int main()
{
vector<int> data1 = { 3, 6, 9, 12}, data2 = { 2, 4, 6, 8, 10, 12 }, result;
int i = 0, j = 0, length1 = data1.size(), length2 = data2.size();
while (i < length1 && j < length2)
{
if (data1[i] < data2[j])
i++;
else if (data2[j] < data1[i])
j++;
else if (data1[i] == data2[j])
{
result.push_back(data1[i]);
cout << "valor : " << data1[i] << endl;
i++;
j++;
}
}
cout << "Final Size: "<< result.size();
return 0;
}
实时代码
使用算法库,特别是 std::set_intersection。
以下是上面链接的cpp首选项页面中略微改编的示例:
int main()
{
std::vector<int> v1{3, 6, 9, 12};
std::vector<int> v2{2, 4, 6, 8, 10, 12 };
std::sort(v1.begin(), v1.end());
std::sort(v2.begin(), v2.end());
std::vector<int> v_intersection;
std::set_intersection(v1.begin(), v1.end(),
v2.begin(), v2.end(),
std::back_inserter(v_intersection));
std::cout << "Final Size: "<< v_intersection.size();
}
相关文章:
- 如何在C++中比较两个char数组
- 在c++中获取两个大int,并将它们存储在数组中
- 如何以优化的方式同时迭代两个间距不相等的数组
- 运算符重载 (+),用于添加两个具有 C++ 的数组
- 将字符串拆分为标记,并将标记拆分为两个单独的数组
- 可以将两个相同类型的连续数组视为一个数组吗?
- C++递归来决定数组中的两个值
- 如何将字符串和整数读取到两个单独的动态数组中的程序编写?
- 给定一个大小为 N 的数组 S,检查是否可以将序列拆分为两个序列
- 在 char* 数组中添加两个索引
- 使用嵌套函数数组是个好主意吗?
- 链表数组(5 个队列)
- 是否有可能通过溢出 C 中的第一个元素来写入数组第二个元素
- 动态分配一维结构数组:两种方法
- 指向数组第一个元素的指针的地址
- 用 std::valarray 替换 POD C 样式数组是个坏主意吗?
- OpenGL:两个顶点数组 + 两个索引数组
- c++多维数组多个数据类型
- 使用C++AMP处理大型数组(65536+个元素)
- 在c++中使用MKL函数初始化数组是个好主意吗?