@sabn1k
Возможно я написал чепуху, но попытайтесь понять

Как пользоваться вектором в функции?

Я не могу понять, как, если я в качестве параметров функции указал вектора, как с ними потом работать? Как выводить их значения в функции и т.п.? В общем, объясните, пожалуйста как их использовать где-то еще, (в данном случае в функции) по-мимо обычного использования в main() как массива.
  • Вопрос задан
  • 826 просмотров
Решения вопроса 1
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
#include <iostream>
#include <vector>
using namespace std;

//Пример передачи по ссылке
void vectorTransform(std::vector<int> &v){
	v[0] = 100500;
}

//Пример передачи по указателю
void vectorTransform_1(std::vector<int> *v){
	v->at(0) = 100501;
}

int main() {
	std::vector<int> someVec = {0,1,2,3,4,5};
	std::cout << someVec[0] << std::endl;
	vectorTransform(someVec);
	std::cout << someVec[0] << std::endl;
	vectorTransform_1(&someVec);
	std::cout << someVec[0] << std::endl;
	return 0;
}

https://ideone.com/t7aYdA
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
GavriKos
@GavriKos
Да точно так же и использовать:
void myfuncclear(std::vector<int> param)
{
param.clear();
}

Но все таки передавать лучше все таки указатель:
void myfuncclear(std::vector<int>* param)
{
param->clear();
}


Не уверен что у вектора есть clear - но суть та же.
Может конечно вас смущает оператор [] при передаче указателя... Делайте разыменование, или используйте at.
Ответ написан
@AAProfi
Програмист
// т.к. vector это шаблон, напишем шаблонную функцию вычисления максимума для  вектора

template <typename T>
bool Max(std::vector<T> &v, T &result){
 if(v.empty()) return false;
 result = *v.begin();

 for(std::vector<T>::iterator idx = v.begin(); idx != v.end(); idx++)
   if(result > *idx) result = *idx;
 return true;
};


 void main(void){

// Сделаем два вектора разного типа - int и double  и заполним их...
  std::vector<int>    VecInt;
  std::vector<double> VecDbl;

  VecInt.push_back(1);
  VecInt.push_back(5);
  VecInt.push_back(6);
  VecInt.push_back(7);

  VecDbl.push_back(15.5);
  VecDbl.push_back(55.3);
  VecDbl.push_back(65.3);
  VecDbl.push_back(75.7);
  VecDbl.push_back(45.5);
  VecDbl.push_back(85.3);
  VecDbl.push_back(65.3);
  VecDbl.push_back(75.7);

// Переменные для результатов
  int MaxInt;
  double MaxDbl;

// Применим шаблонную функцию к вектору...
  Max<int>(VecInt,MaxInt);
  Max<double>(VecDbl,MaxDbl);

// Вывод результата
  std::cout <<"Max of int    = " << MaxInt << std::endl;
  std::cout <<"Max of double = " << MaxDbl << std::endl;

  return 0;
 };
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы