@Loligan

Как найти сумму объектов в векторе через итератор?

Есть допустим класс:

class one
{
private:
std::string a;
int b;
bool c;

vector one_v;
...


в векторе one_v 5 объектов класса one. Как найти через итератор vector::iterator количество объектов с названием в string a = 'Вася'? Покажите пример, даже используя предикат.

Или разумнее искать так ?:
цикл от 1 до 5
one *o=one_v.at(i);
if (o.a=='Вася')
s++
  • Вопрос задан
  • 283 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
ideone.com/HLeMY2

#include <algorithm>
#include <iostream>

class one
{
public:
	one(std::string a) : _a(a) { }
	std::string a() { return _a; }
private:
	std::string _a;
	int b;
	bool c;
};

int main() {
	const std::vector<one> ones = {
		one("Vasya"),
		one("Meh"),
		one("Foo"),
		one("Vasya"),
		one("Vasya"),
		one("Bar")
	};
	std::cout << std::count_if(
			ones.cbegin(), ones.cend(),
			[](one o){ return o.a() == "Vasya"; }
		);
	return 0;
}


Если есть вопросы - задавайте
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы