Что мне вернуть в основную функцию из моей строковой функции? - PullRequest
2 голосов
/ 26 апреля 2019

Я закончил свою лабораторную задачу, но у меня есть быстрый вопрос, чтобы исправить конец. У меня есть вектор в функции, который должен быть возвращен в main, чтобы я мог выводить элементы вектора. я кладу вернуть; в конце функции, так как это имя вектора в функции, но я получаю ошибку.

* Там, где написано «cout << имена есть», должно быть в основном, но я не могу понять, что положить в возвращение. * Я также поставил return 0, потому что это был единственный способ, с помощью которого вся программа работала, поскольку выходные данные также находятся в функции, но мне нужно вернуть их в main и изменить return 0; Извините, если это плохой вопрос, который я все еще изучаю, спасибо. </p>

string switching(vector<string> a, int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i] > a[j]) {
                swap(a[i], a[j]);
            }
        }
    }

    cout << "The order of names are...\n";
    for (int i = 0; i < n; i++) {
        cout << a[i] << "\n";
    }

    return 0;
}

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

Как уже было предложено, вы можете изменить сигнатуру функции на

std::vector<std::string> switching(std::vector<std::string> a, int n)

Или вы можете передать строковый векторный аргумент по ссылке:

void switching(std::vector<std::string>& a, int n)

Показывает основной вызов первой версии:

#include <iostream>
#include <string>
#include <vector>

std::vector<std::string> switching(std::vector<std::string> a, int n) {
  for (int i = 0; i < n - 1; i++) {
    for (int j = i + 1; j < n; j++) {
      if (a[i] > a[j]) {
        swap(a[i], a[j]);
      }
    }
  }
  return a;
}

int main()
{
  std::vector<std::string> strings{
    "John",
    "Fred",
    "Alice"
  };

  auto sorted = switching(strings, strings.size());
  std::cout << "The order of names are...\n";
  for (auto const& name : sorted) {
    std::cout << name << "\n";
  }

  return 0;
}
0 голосов
/ 26 апреля 2019

1.Вы можете изменить тип возвращаемого значения функции;

   vector<string> switching(vector<string> a, int n)
{
     //Your core-code here;
     return a;    
}
Параметры могут передаваться по ссылке.
void switching(vector<string> &a, int n)
{
     //Your core-code here;

}

Таким образом, параметры могут изменяться одновременно в основной функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...