C ++使用list with count()函数

时间:2009-10-06 16:01:37

标签: c++ stl

我有一个列表L,需要计算它中有多少1个。

list<int> L;

L.push_back(14); L.push_back(5); L.push_back(22);

L.push_back(1); L.push_back(1); L.push_back(-7);

我给出的功能是:

assert ( count(...,...,...) == 2);

我需要知道什么会取代...

我已尝试L.begin(), L.end(), 1替换...,但它一直给我一个错误,说不允许。所以我需要替换...而不添加任何额外的代码。

这是我得到的错误:

  

错误C2782:   “iterator_traits&LT; _Iter&GT; :: difference_type   std :: count(_InIt,_InIt,const _Ty&amp;)':   模板参数'_InIt'是   暧昧

这是确切的代码&amp;错误。

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>
#include <cassert>
using namespace std;


int main()
{
    int A1[6] = {15,8,10,9,12,13};
    vector<int> V(A1, A1+6);
    list<int> L; 

    L.push_back(14); L.push_back(5); L.push_back(22);
    L.push_back(1); L.push_back(1); L.push_back(-7);

    count(L.begin(), L.end(), 1);

}
  

错误C2782:   “iterator_traits&LT; _Iter&GT; :: difference_type   std :: count(_InIt,_InIt,const _Ty&amp;)':   模板参数'_InIt'是   暧昧

     

c:\ program files \ microsoft visual   studio 9.0 \ vc \ include \ algorithm(160):   看到'std :: count'的声明1&gt;
  可能是'unsigned int'

3 个答案:

答案 0 :(得分:5)

它应该是std::count(L.begin(), L.end(), 1)所以如果这不起作用,我可以说是确保你#include <algorithm>

此代码在VS2008中为我编译:

#include <list>
#include <algorithm>
#include <cassert>
using namespace std;

int main()
{
    list<int> L;

    L.push_back(14); L.push_back(5); L.push_back(22);

    L.push_back(1); L.push_back(1); L.push_back(-7);

    assert( count(L.begin(), L.end(), 1) == 2);
}

答案 1 :(得分:0)

确保使用命名空间std;在所有包含之后并确保您还包括算法 那么L.begin()和L.end()应该没有任何问题

答案 2 :(得分:-1)