Форум программистов, компьютерный форум CyberForum.ru

Сортировка массива (vector) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
GHOST12
0 / 0 / 0
Регистрация: 16.11.2011
Сообщений: 86
12.11.2012, 19:05     Сортировка массива (vector) #1
Мне нужно отсортировать по алфавиту строки. При сортировке нужно учитывать только первые 10 символов из строки. Помогите с функцией..
Вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <fstream>
 
#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
 
using namespace std;
 
bool Mycompare (string v1, string v2)
{
 
}
 
int _tmain(int argc, _TCHAR* argv[])
{
 
  ifstream c("input.txt");
 
  vector<string> aa;
  char ee[255];
 
 
//input
  if (c.is_open()) {
    while(!c.eof()) {
      c.getline(ee, 254);
      aa.push_back(ee);
    }
  }
    sort(aa.begin(), aa.end(), Mycompare);  
        
  c.close();
  cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 19:05     Сортировка массива (vector)
Посмотрите здесь:

C++ Сортировка vector'а
C++ Сортировка в Vector
Сортировка по одному из полей std::vector C++
сортировка слов vector C++
Сортировка vector и list C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
12.11.2012, 19:56     Сортировка массива (vector) #2
если строка длинее 10 усекай её методом std::string::resize до 10 и сравнивай
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.11.2012, 20:02     Сортировка массива (vector) #3
C++
1
2
auto end = (text.size() > 10) ? std::next(text.begin(), 10) : text.end();
std::sort(text.begin(), end, [](char i, char j){ return i < j; });
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
12.11.2012, 20:13     Сортировка массива (vector) #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <string>
 
using namespace std;
 
class my{
 
public:
    string s;
 
    my(string p){
        s=p;
    }
 
 
};
bool stroka(const my &left,const my &right)
{
    return left.s < right.s;
 
    return 0;
} 
 
    int main()
    {  
 
vector<my>v;
 
my ob("x");
my ob2("a");
my ob3("k");
 
v.push_back(ob);
v.push_back(ob2);
v.push_back(ob3);
 
for (int o=0;o<v.size();o++)
{
    cout<<v[o].s<<endl;
}
 
sort(v.begin(),v.end(),stroka);
 
for (int o=0;o<v.size();o++)
{
    cout<<v[o].s<<endl;
}
 
        getchar();
        return 0;
    }
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
12.11.2012, 20:16     Сортировка массива (vector) #5
Цитата Сообщение от I.M. Посмотреть сообщение
C++
1
2
auto end = (text.size() > 10) ? std::next(text.begin(), 10) : text.end();
std::sort(text.begin(), end, [](char i, char j){ return i < j; });
Извиняюсь, думал вы сортируете строку, а не строки.
Тогда мой вариант нужно немного переделать
C++
1
2
auto end = (text.size() > 10) ? std::next(text.begin(), 10) : text.end();
std::sort(text.begin(), end, [](const std::string& i, const std::string& j){ return i < j; });
Т.е. изменить типы данных для лямбды
Sawyer1988
10 / 10 / 0
Регистрация: 04.03.2012
Сообщений: 128
12.11.2012, 20:33     Сортировка массива (vector) #6
Если надо не с 1ого эл-та,то:
C++
1
2
3
4
5
6
vector<my>::iterator p1=v.begin();
vector<my>::iterator p2=v.begin()+10
.
.
.
sort(p1,p2,stroka);
Yandex
Объявления
12.11.2012, 20:33     Сортировка массива (vector)
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru