C++ 如何将数字作为函数参数C+传递到向量中+;

C++ 如何将数字作为函数参数C+传递到向量中+;,c++,function,vector,parameters,numbers,C++,Function,Vector,Parameters,Numbers,函数FLIP采用4个参数。n、 向量的元素数,向量v,i和j,随机数。函数将类似于此翻转(n,v,i,j)。它所做的是将向量的所有元素从i到j,并将它们反转。例如,FLIP(9[3268599174],1,6)应该返回v=[958623174] TL/DR:我不知道如何将数字[3 2 6 8 5 9 1 7 4]作为参数传递给向量,并给出这些值 #include <iostream> #include <vector> using namespace std; void

函数FLIP采用4个参数。n、 向量的元素数,向量v,i和j,随机数。函数将类似于此翻转(n,v,i,j)。它所做的是将向量的所有元素从i到j,并将它们反转。例如,FLIP(9[3268599174],1,6)应该返回v=[958623174]

TL/DR:我不知道如何将数字[3 2 6 8 5 9 1 7 4]作为参数传递给向量,并给出这些值

#include <iostream>
#include <vector>
using namespace std;
void FLIP(int n,vector<int>& v,int i,int j)
{
    int k,l,aux;

    for(k=i;k<=j;k++)
    {
        for(l=j;l>=i;j--)
        {
            aux=v[k];
            v[k]=v[l];
            v[l]=aux;
        }
    }

}
int main()
{

int i,v[50];
FLIP(9,[3 2 6 8 5 9 1 7 4],1,6);
for(i=1;i<=9;i++)
{
    cout<<v[i]<<" ";
}

    return 0;
}
#包括
#包括
使用名称空间std;
无效翻转(整数n、矢量和v、整数i、整数j)
{
int k,l,aux;
对于(k=i;k=i;j--)
{
aux=v[k];
v[k]=v[l];
v[l]=aux;
}
}
}
int main()
{
int i,v[50];
翻转(9[3 2 6 8 5 9 1 7 4],1,6);
对于(i=1;i语法将是

{3, 2, 6, 8, 5, 9, 1, 7, 4}
而不是

[3 2 6 8 5 9 1 7 4]
但另外,不能将临时引用绑定到非常量引用

您可以将
main
更改为:

int main()
{
    std::vector<int> v = {3, 2, 6, 8, 5, 9, 1, 7, 4};
    FLIP(9, v, 1, 6);
    for (auto e : v)
    {
        std::cout << e << " ";
    }
}
intmain()
{
向量v={3,2,6,8,5,9,1,7,4};
翻转(9,v,1,6);
用于(自动e:v)
{

std::cout由于向量的定义相互冲突,这个问题有些令人困惑。在
main()
中,v被定义为字符数组:
v[50]
。但是,在FLIP中,它被定义为向量

因为更好的方法是使用std::vector,所以所有的评论都倾向于这个方向。这里是一个可能的实现。如果您有任何问题,请告诉我

#include <iostream>
#include <vector>
using namespace std;

void print_vector(vector<int> v) {
  for(const auto& element: v) {
    cout<<element<<" ";
  }
  cout << "\n";
}

void FLIP(int n, vector<int>& v,int i,int j)
{
  // i is 1-based index into vector to starting position
  // j is 1-based index to ending position
  // check to be sure i and j are valid for this vector:
  if(i < 1 || i > j || j > v.size()) {
    cout << "invalid arguments\n";
    return;
  }
  reverse(v.begin() + i - 1, v.begin() + j);
}



int main()
{
  std::vector<int> vect{3, 2, 6, 8, 5, 9, 1, 7, 4};
  std::cout << "Print vector before ...\n\t";
  print_vector(vect);
  std::cout << "Print vector after ...\n\t";

  FLIP(vect.size(), vect,1,6);

  print_vector(vect);

  return 0;
}

研究
std::swap
std::reverse
std::rotate
uniform initialization
std::vector
std::tuple
,references等等。您没有使用参数“n”,只要其他两个参数小于向量的大小,为什么不去掉它?@Gardener My assignment指定函数应类似于此翻转(n,v,i,j)。虽然您是对的,但它不使用n参数,但我真的不知道他们希望我在这种情况下如何使用它。我按照指示进行了操作,得到了错误| 28 |错误:在C++98中,“v”必须由构造函数初始化,而不是由{…}和| 28 |错误:无法转换{3,2,6,8,5,9,1,7,4}从''到'std::vector'|@BugaAndrei:使用更新的标准,如C++11/C++14/C++17(
-std=C++17
,例如gcc/clang)。
Print vector before ...
    3 2 6 8 5 9 1 7 4 
Print vector after ...
    3 9 5 8 6 2 1 7 4 

Process finished with exit code 0