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

Zee*_*aja 1 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);
Run Code Online (Sandbox Code Playgroud)

我得到的功能是:

assert ( count(...,...,...) == 2);
Run Code Online (Sandbox Code Playgroud)

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

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

这是我得到的错误:

错误C2782:'iterator_traits <_Iter> :: difference_type std :: count(_InIt,_InIt,const _Ty&)':模板参数'_InIt'不明确

这是确切的代码和错误.

#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);

}
Run Code Online (Sandbox Code Playgroud)

错误C2782:'iterator_traits <_Iter> :: difference_type std :: count(_InIt,_InIt,const _Ty&)':模板参数'_InIt'不明确

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

rlb*_*ond 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);
}
Run Code Online (Sandbox Code Playgroud)