c++ - 你如何找到集合中元素的总和?

标签 c++ set add

<分区>

#include <iostream>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;

int main() {
    int i,sum,sum1,n;
    cin>>n;
    vector<int>pre;
    set<int>s1;
    set<int>s2;
    int temp1[n];
    int temp2[n];
    for(i=0;i<n;++i)
        cin>>temp1[i];
    for(i=0;i<n;++i)
        cin>>temp2[i];
    for(i=0;i<sizeof(temp1);++i)
        s1.insert(temp1[i]);    
    for(i=0;i<sizeof(temp2);++i)
        s1.insert(temp2[i]);
    for(i=n;i>=0;--i)
        sum+=i;

    for(i=0;i<s1.size();++i)
        sum1+=s1[i];
    if(sum==sum1)
        cout<<"I become the guy.";
    else
         cout<<"Oh, my keyboard!";
    return 0;
}

ideone 链接:https://ideone.com/trfOz0 我正在尝试添加集合 s1 中的元素,但似乎这种方式不起作用,我该怎么做?

最佳答案

您无法为 std::set 编制索引.它不是那样 build 的。您可以检查成员资格,但不能只选择第 n 个元素。

为了求和,您必须遍历集合 - 但不是通过索引,而是通过迭代器:

int sum = 0;
for (std::set<int>::iterator it = s1.begin(); it != s1.end(); ++it) {
    sum += *it;
}

或使用 std::accumulate :

int sum = std::accumulate(s1.begin(), s1.end(), 0);

或者在 C++11 中:

int sum = 0;
for (int i : s1) {
    sum += i;
}

关于c++ - 你如何找到集合中元素的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30849562/

相关文章:

c++ - 在基于C++范围的循环中使用&运算符..令人困惑

c++ - 当您在设备内部调用 cudaMalloc 时实际发生了什么?

java - 在Java中删除集合中重复的最佳方法?

git - 如何使用 libgit2 将 git 子模块添加到代码中的 super 项目

c# - 使用 Datagridview 更新数据库

c++ - 实现哈希表,insert函数导致 "scope"错误

javascript - 如何可靠地检查对象是 EcmaScript 6 Map/Set?

MongoDb - 如何使用 $set 更新嵌套对象的多个元素?

swift - 使用枚举键向 Swift 字典添加值

c++ - 如何获取占位符的内容::_1