С++ : Ошибка C2039

158
20 ноября 2018, 13:20

name не является членом std::vector<man,std::allocator<_Ty>>. Вроде решения находил, но в моем случае не спасло.

#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
struct man
{
    int score;
    string name;
};
bool scoredd(man a, man b)
{
    return a.score > b.score;
}
int main()
{
    string  guyy;
    int n, f = 0;
    cin >> n;
    vector <man> person(n);
    getline(cin, guyy);
    for (int i = 0; i < n; i++)
    {
        man struct_temp;
        int d = 0, j = 0, k = 0;
        string  guy;
        getline(cin, guy);
        for (auto c : guy)
            d++;
        while (j < d)
        {
            if ((guy[j] >= '0') && (guy[j] <= '9'))
                k = k + (int)guy[j];
            j++;
        }
        struct_temp.name = guy;
        struct_temp.score = k;
        person[i] = struct_temp;
    }
    stable_sort(person.begin(), person.end(), scoredd);
    for (auto c : person)
        cout << person.name << endl;
    system("pause");
    return 0;
}
Answer 1
for (auto c : person)
    cout << с.name << endl;

Давайте более логичные имена. person в вашем случае не один человек (каковым является в данной ситуации c), а целая толпа... Это, наверное, вас и подвело - вы решили, что имеете дело с конкретным объектом.

А вообще-то, компилятор все правильно и весьма понятно рассказал: что члена name у вектора нет.

Answer 2

Однако в вашем коде много лишнего, кроме ошибки, на которой указал пользователь Harry. Его можно улучшить например так:

multimap< int, string, std::greater<int> > person; // сортирует по компаратору больше
string  guy;    
while (getline(cin, guy))
{  
    int k = 0;
    for (char c : guy) {
        if (isdigit(c))
            k += (int)c;
    }
    person.insert(make_pair(k, guy));
}
cout << endl << endl;
for (auto p : person)
    cout << p.second << endl;

Код короче, понятнее, меньше затрат на память, и конечно, быстрее.

READ ALSO
C++ - передача массива в функцию

C++ - передача массива в функцию

Есть несколько функций, которые принимают в качестве параметра массив целых чисел

209
c extern при множественном объявлении

c extern при множественном объявлении

Подскажите, как ведет себя extern в следующей ситуации:

173
Как с нуля поставить cucumber фреймворк?

Как с нуля поставить cucumber фреймворк?

Я начинающий автоматизатор, и мне очень понравился фреймворк cucumber, и хочется самому поставить его у себя дома на ПКМогу писать сценарии и степы...

156
Как изменить панель в зависимости от выбора?

Как изменить панель в зависимости от выбора?

мне нужно сделать что-то типа TreeView, суть в том, что-бы когда пользователь выбирает некий класс менялась основная панель, реализовать всё нужно...

178