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

Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки - C++

Восстановить пароль Регистрация
 
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
05.02.2014, 14:10     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки #1
Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора указатель показывал на тот же элемент, а не на элемент, который стоит на месте прошлого. Как это можно сделать?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 14:10     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки
Посмотрите здесь:

C++ Составить блок – схемы для шейкер- сортировки и сортировки Шелла
C++ Составить программы для пузырьковой сортировки и сортировки посредством выбора с применением оператора while
C++ Функция сортировки вектора и списка
Алгоритм сортировки для вектора C++
Сделать так, что бы в общем балле отображался сумма, складываемых 4 предметов и деленный на тот же количество предметов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Тамика
Котовчанин
 Аватар для Тамика
859 / 439 / 129
Регистрация: 16.02.2010
Сообщений: 2,537
Записей в блоге: 27
05.02.2014, 14:17     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки #2
Не уверенна, что сработает, но если так
C++
1
2
3
4
5
6
7
8
struct marshrut {
...
};
std::vector <int, marshrut, less<int> > idmarsh_t;
static idmarsh_t marsmap;
...
int ownid = ...
const marshrut *m = &( marsmap[ ownid ] );
Видела когда-то на форуме такой вариант.
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6162 / 2891 / 282
Регистрация: 04.12.2011
Сообщений: 7,691
Записей в блоге: 3
06.02.2014, 20:41     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки #3
Taras_Z, первое, что пришло в голову, включить в класс такой указатель и сделать доступ через вычисление:
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
#include <iostream>
#include <algorithm>
#include <vector>
 
using namespace std;
 
class Data_in_vec{
 
private:
Data_in_vec * data_in_vec;
 
public:
    Data_in_vec * get_self_ptr(){return this;}
    void set_self_ptr(Data_in_vec * ptr_){data_in_vec=ptr_;}
    bool operator<(const Data_in_vec& rhs){return data_i < rhs.data_i;}
 
Data_in_vec():data_i(0){data_in_vec=0;}
 
Data_in_vec(int n_i):data_i(n_i){data_in_vec=get_self_ptr();}
 
Data_in_vec(const Data_in_vec& rhs): data_i(rhs.data_i){data_in_vec=get_self_ptr();}
 
int data_i;
};
 
 
int main()
{
int arr[]={2,4,3,8,7,5,0,9};
 
    vector<Data_in_vec> vec;
    cout<<"By the index before sorting"<<endl;
    for(int i=0; i<8; ++i){
        vec.push_back(Data_in_vec(arr[i]));
cout<<vec[i].data_i<<" ";
    }
cout<<endl<<endl;
sort(vec.begin(), vec.end());
cout<<"By the index after sorting"<<endl;
for(int i=0; i<8; ++i){
cout<<vec[i].data_i<<" ";
    }
cout<<endl<<endl;
cout<<"By the pointer to itself"<<endl;
for(int i=0; i<8; ++i)cout<<(*(vec[i].get_self_ptr())).data_i<<" ";
cout<<endl<<endl;
system("pause");
return 0;
}
Хотя может и не понял вопрос.
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
06.02.2014, 20:56     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки #4
Цитата Сообщение от Taras_Z Посмотреть сообщение
У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора указатель показывал на тот же элемент, а не на элемент, который стоит на месте прошлого. Как это можно сделать?
Запомнить значение элемента, отсортировать вектор, найти в нём элемент с этим значением, установить указатель на найденный элемент.
Yandex
Объявления
06.02.2014, 20:56     Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки
Ответ Создать тему
Опции темы

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