C++:算法计算容器之和

问题

用accumulate求一个vector中的元素之和.[这里的vector可以是其他容器,例如list],及比较两个容器的元素是否相同.

C++.
image-2084

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/*************************************************************************
    > File Name: test.10.3.cpp
    > Author: puruidong
    > Mail: 1@w1520.com
    > Created Time: 2014年06月05日
 ************************************************************************/

#include<iostream>
#include<vector>
#include<numeric>
using namespace std;

/**************************
 
    用accumulate求一个vector<int>中的元素之和.


 *********************************/

//比较两个容器的元素是否相同,应首先保证两个容器长度一样.
//因为equal(别扭,java的是equals...)利用迭代器完成操作,
//因此可以通过调用equal来比较两个不同类型的容器中的元素,
//而且元素类型也不必一样.
//*************************
//只要我们能用==来比较两个元素类型即可.
bool eqvector(vector<int> v1,vector<int> v2)
{
    bool cho = false;
    if(v1.size()==v2.size())
    {
        cho = equal(v1.cbegin(),v1.cend(),v2.cbegin());
       // return cho;
    }
    return cho;
}


 int main()
 {
     vector<int> veca;
     vector<int> vec;
     int sa;
     cout << "请输入int型数字:" << endl;
     while(cin >> sa)
     {
         vec.push_back(sa);
         veca.push_back(sa);
     }
    //使两个vector不相等.veca.push_back(10);
     cout << "两个vector比较:" << eqvector(vec,veca) << endl;
    auto result = accumulate(vec.cbegin(),vec.cend(),0);
    cout << "vector之和是:" << result << endl;
     return 0;
 }

C++:查找元素重复次数

资料

泛型算法:C++泛型的参数可以代表类或个别对象。C++无法对泛型的类型参数进行约束。在编译时,每个被使用的封闭泛型类型(即是所有泛型参数的实际类型都已被指明的泛型)都会有独立的编码产生,编译程序会在此时确保类型安全性。可是如果泛型要运用其泛型参数的某成员,而该泛型参数又不包含该成员的时候,编译程序所产生的错误信息或会看似与实际问题无关,增加除错的难度.[更多]

问题

头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector中,打印有多少个元素的值等于给定量.

C++.
image-2082

源代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*************************************************************************
    > File Name: test.10.1.cpp
    > Author: puruidong
    > Mail: 1@w1520.com
    > Created Time: 2014年06月05日
 ************************************************************************/

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
/*****************************
 
头文件algorithm中定义了一个名为count的函数,它类似find,接受一对迭代器和一个值
 作为参数.count返回给定值在序列中出现的次数.编写程序,读取int序列存入vector中,打印有多少个元素的值等于给定量.  

 ****************************************/

int main()
{
    cout << "請輸入一組數字[預設的重複數字是:20]:" << endl;
    int va;
    vector<int> vec;
    while(cin >> va)
    {
        vec.push_back(va);
    }
    int c = 20;
    auto result = count(vec.cbegin(),vec.cend(),c);
    cout << " vector中有: " << result << " 个重复的[20]. " << endl;
    return 0;
}