У меня есть набор строк в C ++.
Я вставляю в этот набор как:
m.insert("1-2-35-2");
m.insert("1-2-36-1");
m.insert("1-2-37-2");
m.insert("1-2-38-1");
m.insert("1-2-39-2");
m.insert("2-2-40-1");
m.insert("2-2-41-2");
m.insert("2-2-42-1");
m.insert("1-2-43-2");
m.insert("1-2-44-1");
m.insert("1-2-45-2");
m.insert("1-2-46-1");
m.insert("1-2-47-2");
я хочу вычислить количество всех строк внутри набора, которые начинаются с "2 -" (count = 3) , а также которые начинаются с " 1 -" (count = 10 ) .
есть ли способ сделать это.
Я пытался с lower_bound
и upper_bound
, но это дает мне некоторые ошибки.
ошибки приходят для утверждения:
int i=it_upper-it_lower;
Я использую ОС Solaris SPARC.
Я только что проверил эту программу
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
int main () {
list<int> mylist;
for (int i=0; i<10; i++) mylist.push_back (i*10);
list<int>::iterator first = mylist.begin();
list<int>::iterator last = mylist.end();
cout << "The distance is: " << distance(first,last) << endl;
return 0;
}
выдает ошибку компиляции:
line 13: Error: Could not find a match for std::distance<std::ForwardIterator, std::Distance>(std::list<int, std::allocator<int>>::iterator, std::list<int, std::allocator<int>>::iterator).
1 Error(s) detected.