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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.88
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 649
Завершенные тесты: 2
#1

vector<vector<double>> + std::sort() - C++

27.04.2013, 19:09. Просмотров 1095. Ответов 8
Метки нет (Все метки)

Позвольте узнать... Возможно ли через vector<vector<double>> и функцию std::sort()
отсортировать строки массива в лексикографическом порядке?
Пример:
1 2 3
0 5 7
0 5 1
Получим:
0 5 1
0 5 7
1 2 3

Получится ли сравнивать строки через memcmp() для быстрого сравнения?
Как я понял, sort работает довольно быстро, быстрее чем ручная реализация быстрой сортировки.
Мне необходимо все по максимуму быстро работающее, т.к. используются большие массивы данных.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.04.2013, 19:09     vector<vector<double>> + std::sort()
Посмотрите здесь:

vector<vector<double>> => 2 * vector<vector<double>> - C++
Здравствуйте. У меня следующий вопрос. Имеется двумерный массив, созданный через класс vector&lt;vector&lt;double&gt;&gt; и пусть последний столбец...

stl sort vector не сортирует ?! - C++
class Playlist { private: std::vector&lt;Song&gt; s_container; public: Playlist() { s_container=std::vector&lt;Song&gt;(); } ...

Sort vector, сортировка по двум полям структуры - C++
Поскажите как отсортировать если: struct DATA{ string fir; string sec; double sm; }; vector &lt;DATA&gt; vec; vector...

std::vector - C++
Здравствуйте! Подскажите пожалуйста разумно-ли использовать std::vector если у меня в векторе может храниться довольно большое кол-во...

Std::vector - C++
Здравствуйте, помогите, пожалуйста, с более теоретическим вопросом. Когда мы не прописываем using namespace std; мы пишем перед...

Собеседование std::vector - C++
1) Вечереет. Вы крутой старший разработчик, сидите и делаете вид, что кодите мегапроект. У вас через полчаса собеседование. Вы...

std::vector пустой - C++
Всем привет. Собственно проблема: a.push_back(56); Как бы я не добавлял елементы в вектор он все ровно пустой. Раньше такого...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
27.04.2013, 19:16     vector<vector<double>> + std::sort() #2
Можно.
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
typedef int vecType;
typedef vector<vecType> oneDimenVec;
typedef vector<oneDimenVec> twoDimenVec;
 
int main()
{
    srand(time(0));
 
    twoDimenVec vec { {1,2,3}, {0,5,7}, {0,5,1} };
 
    sort(begin(vec), end(vec), [](const oneDimenVec &a, const oneDimenVec &b) {
        return lexicographical_compare(begin(a), end(a), begin(b), end(b));} );
    for_each(begin(vec), end(vec), [](const oneDimenVec &v) {
            copy(begin(v), end(v), ostream_iterator<vecType>(cout, " "));
            cout << endl;
    });
 
    return 0;
}
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 649
Завершенные тесты: 2
27.04.2013, 19:25  [ТС]     vector<vector<double>> + std::sort() #3
Цитата Сообщение от Olivеr Посмотреть сообщение
return lexicographical_compare(begin(a), end(a), begin(b), end(b));}
а можно их сравнивать через memcmp? и если да, то кто быстрее сравнит?
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
27.04.2013, 19:35     vector<vector<double>> + std::sort() #4
Тогда, как я считаю, данные придется хранить в каком-нибудь массиве.
Но толку? Если lexicographical_compare реализована на одном цикле, операторах !=, < ?
Можно даже самому написать, строчек 5-8.
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 649
Завершенные тесты: 2
27.04.2013, 20:24  [ТС]     vector<vector<double>> + std::sort() #5
Цитата Сообщение от Olivеr Посмотреть сообщение
twoDimenVec vec { {1,2,3}, {0,5,7}, {0,5,1} };
компилятор ругается на это... говорит, что перед первой { нужна запятая
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
27.04.2013, 20:25     vector<vector<double>> + std::sort() #6
Это для компиляторов с поддержкой C++11. Вам переписать для C++98?
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 649
Завершенные тесты: 2
27.04.2013, 20:44  [ТС]     vector<vector<double>> + std::sort() #7
Если можно, то буду очень признателен.
Olivеr
412 / 408 / 13
Регистрация: 06.10.2011
Сообщений: 831
27.04.2013, 20:51     vector<vector<double>> + std::sort() #8
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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
using namespace std;
 
typedef int vecType;
typedef vector<vecType> oneDimenVec;
typedef vector<oneDimenVec> twoDimenVec;
 
bool compare(const oneDimenVec &a, const oneDimenVec &b)
{   return lexicographical_compare(begin(a), end(a), begin(b), end(b)); }
 
void print(const oneDimenVec &v)
{
    copy(begin(v), end(v), ostream_iterator<vecType>(cout, " "));
    cout << endl;
}
 
int main()
{
    twoDimenVec vec(3, oneDimenVec(3));
    vec[0][0] = 1;
    vec[0][1] = 2;
    vec[0][2] = 3;
    vec[1][0] = 0;
    vec[1][1] = 5;
    vec[1][2] = 7;
    vec[2][0] = 0;
    vec[2][1] = 5;
    vec[2][2] = 1;
 
    sort(vec.begin(), vec.end(), compare);
    for_each(vec.begin(), vec.end(), print);
 
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.04.2013, 22:35     vector<vector<double>> + std::sort()
Еще ссылки по теме:

Указатель на std::vector - C++
Добрый вечер, всегда боялся передавать доступ к std::vector'y класса через: 1) указатель на контейнер 2) ссылка на контейнер 3)...

std::vector<char**> - C++
Может конечно боян, но похожей темы я не нашел. И так в чем проблема... Пишу программу для работы со своей базой данных. Решил базу...

std::vector и деструкторы - C++
Создаю динамический массив vector, состоящий из объектов, в которых есть конструкторы и деструкторы. как-то так: { vector&lt;Element&gt;...

Контейнер std::vector - C++
Помогите определить почему не работает задача. Оибку выбивает на строку k.push_back(0); #include &lt;iostream&gt; #include &lt;math.h&gt; ...

Vector to double - C++
Здравствуйте. У меня есть vector в котором хранятся значения типа char. Мне их нужно преобразовать в double На пример: V1 = ‘2’; V1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
mat_for_c
139 / 134 / 29
Регистрация: 26.04.2013
Сообщений: 649
Завершенные тесты: 2
27.04.2013, 22:35  [ТС]     vector<vector<double>> + std::sort() #9
а как скопировать строку из этой матрицы?
Yandex
Объявления
27.04.2013, 22:35     vector<vector<double>> + std::sort()
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru