Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
#1

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

05.02.2014, 14:10. Просмотров 327. Ответов 3
Метки нет (Все метки)

Есть вектор(STL) элементов. У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора указатель показывал на тот же элемент, а не на элемент, который стоит на месте прошлого. Как это можно сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.02.2014, 14:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать так, чтобы после сортировки вектора указатель показывал на тот же элемент, что и до сортировки (C++):

Модифицировать код сортировки так, чтобы на каждом следующем проходе количество сравнений декрементировалось - C++
Помогите разобраться. Нужно модифицировать так, чтобы на втором проходе было 8 сравнений, на третьем 7 и т.д. #include <iostream> ...

Указатель на элемент вектора после операций insert/erase - C++
есть вектор class player{ public: int number; }; //Здесь хранятся физически игроки vector <player> players;

Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а - C++
Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее аргументом должен...

Что нужно изменить чтобы при подсчете количества обменов программа подсчитывала не один алгоритм сортировки - C++
#include <stdio.h> //Подключение заголовочного файла библиотеки ввода/вывода #include <locale.h> //Подключение заголовочного файла...

Сделать так, чтобы массив из метода использовался в обоих методах сортировки и не изменял своего значения - C#
подскажите пожалуйста, как сделать так, чтобы массив из метода Metod использовался в обоих методах сортировки и не изменял своего значения....

Как сделать так чтобы dbimage показывал файлы jpg? - Delphi БД
я с помощью метода insertRecord добавляю картинку в dbimage но если он расширения jpg то он не показывается, а если bmp то показывает....

3
Тамика
Котовчанин
917 / 460 / 145
Регистрация: 16.02.2010
Сообщений: 3,192
Записей в блоге: 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 ] );
Видела когда-то на форуме такой вариант.
1
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6503 / 3142 / 307
Регистрация: 04.12.2011
Сообщений: 8,673
Записей в блоге: 5
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;
}
Хотя может и не понял вопрос.
0
Nick Alte
Эксперт С++
1640 / 1012 / 119
Регистрация: 27.09.2009
Сообщений: 1,945
Завершенные тесты: 1
06.02.2014, 20:56 #4
Цитата Сообщение от Taras_Z Посмотреть сообщение
У меня есть указатель на определенный элемент. Я хочу сделать так, чтобы после сортировки этого вектора указатель показывал на тот же элемент, а не на элемент, который стоит на месте прошлого. Как это можно сделать?
Запомнить значение элемента, отсортировать вектор, найти в нём элемент с этим значением, установить указатель на найденный элемент.
0
06.02.2014, 20:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2014, 20:56
Привет! Вот еще темы с ответами:

Как css сделать так,что если в <img...> не указана картинка,то он показывал ту,которую я укажу? - HTML, CSS
Как с помощью css сделать так,что если в &lt;img...&gt; не указана картинка,то он показывал ту,которую я укажу?

Изменить процедуру сортировки так, чтобы сортировка производилась по убыванию - Pascal ABC
изменить процедуру сортировки так, чтобы сортировка производилась по убыванию элементов.

Изменить процедуру сортировки так, чтобы сортировка производилась по убыванию - Pascal
Изменить процедуру сортировки так, чтобы сортировка производилась по убыванию элементов. Помогите написать код, буду благодарин!!!!

Исследование методов сортировки(что не так?) - Pascal
Составить алгоритм и разработать программу, реализующую быструю сортировку(обменная сортировка с разделением). Исследовать работу программы...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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