Перейти к содержанию
СофтФорум - всё о компьютерах и не только

Вопрос по <vector>


Рекомендуемые сообщения

  1. #include <iostream>    2. #include <vector>    3. using namespace std;    4. int main()    5. {   6.	 vector <int> a;   7.	 vector <int> b;   8.	 vector <int> :: iterator aa;   9.	 vector <int> :: iterator bb;  10.	 int q;  11.	 for(int i=0;i<4;++i)  12.	 {  13.		   cin>>q;  14.		   a.push_back(q);  15.		   cin>>q;  16.		   b.push_back(q);  17.	 }   18.	 for(aa=a.begin(),bb=b.begin();aa<a.end();++aa,++bb)   19.	 {  20.			if(*aa==*min_element(a.begin(),a.end()))  21.			{  22.				   cout<<*bb;  23.			}   24.	 }   25.	 return 0;   26. }  

Можно добиться такого же результата, не выполняя последний цикл for?

  1. for(aa=a.begin(),bb=b.begin();aa<a.end();++aa,++bb)    2. {   3.		if(*aa==*min_element(a.begin(),a.end()))   4.		{   5.			   cout<<*bb;   6.		}    7. }  

Если да, то как?

Изменено пользователем Staind
Ссылка на комментарий
Поделиться на другие сайты

Спасибо, да так работает. А почему нужно писать

- a.begin() ?

ведь вроде достаточно писать границы для итератора min_element...

Изменено пользователем Staind
Ссылка на комментарий
Поделиться на другие сайты

В качестве индекса нам нужно число, интервал между начальным и текущим адресами. Указатель - по сути адрес, поэтому разность двух указателей - уже число, а не указатель. Так что в дополнение к указателю (min_element) на минимальный элемент нам нужен второй указатель, на начало вектора. Как говорил Ной, всякой твари - по паре :1eye:

P.S. min_element - просто функция, работающая с указателями и выдающая указатель, она у нас есть готовая, но ее и на простом С написать легко. А итераторы нам и даром не нужны (пока что)... :)

Изменено пользователем Тролль
Ссылка на комментарий
Поделиться на другие сайты

Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...