我从今天开始对cpp不熟悉,从matlab转移到更快地运行模拟。
我想构建一个接收向量的函数,并返回包含给定值和外观数量的索引的向量。
例如,如果我有:
A={0 , 1, 1, 1, 0};
我想得到
vec1={0, 4}; // 0
a=2;
vec2=(1,2,3); // 1
b=3;
到目前为止,我有:
# include <iostream>
# include <string>
# include <vector>
using namespace std;
const int nTot = 10;
void get_index(vector<int> FVec, vector<int> &vec1, vector<int> &vec2)
{
for (unsigned int i=0; i < FVec.size(); i++)
{
if (FVec[i] == 0)
{
vec1.push_back(i);
}
if (FVec[i] == 1)
{
vec2.push_back(i);
}
}
}
int main()
{
int nf = nTot/2;
vector<int> FVec(nf);
vector<int> vec1;
vector<int> vec2;
get_index(FVec,vec1,vec2);
system (" pause");
return 0;
}
现在的问题是它不会改变向量,可能是由于函数中的赋值
答案 0 :(得分:1)
c ++方式回归&#34;返回&#34;来自单个函数的多个事实上是通过地址将这些事物传递给函数并将其指向的值更新到函数中。然后你不必返回任何东西。
例如: void get_indexes(Vector * vec1,Vector * vec2,int * a,int * b)