【问题标题】:Best way to return and assign a vector in c++ between multiple functions [duplicate]在多个函数之间返回和分配c ++中的向量的最佳方法[重复]
【发布时间】:2017-02-04 07:01:57
【问题描述】:

我希望通过调用 main 中的两个函数来获得一个新生成的向量并添加到全局向量中。我对如何做到这一点有一个粗略的想法,但显然这是不对的..对c ++来说很新,我不太想处理向量回收..如果我不能使用C,我是否必须使用指针++11?最好的方法是什么?

void main(){
  vector <int> newVector = function1 ();
  addVector (newVector);
}

vector <int> function1 (){
   ....
   return returnedVector
}

void addVectors (vector <int> incomingVector){
   globalVector.insert( globalVector.end(), incomingVector.begin(), incomingVector.end());
}

【问题讨论】:

  • 引用传递的最佳方式。
  • void main()... 可能是using namespace std; 而您使用vector 作为变量名...
  • 是的,假设我使用的是命名空间 std...

标签: c++ vector


【解决方案1】:

首先,c++ 中的void main() 不好——它应该是int main()

其次,您在 function1() 中有声明 return vector;,而您很可能是 using namespace std; - 这也很糟糕,因为它可以解释为试图返回一个不可能的类型,也不是您想要的类型做。

这是对代码的重构:

#include <vector>
std::vector<int> function1(); // declaration
void add_vectors(std::vector<int>& ov, const std::vector<int>& iv);
int main() {
    std::vector<int> overall_vec;
    std::vector<int> vec = function1();
    add_vector(overall_vec, vec);
}
std::vector<int> function1() { // definition
    std::vector<int> rtnvec;
    // fill rtnvec with some values
    return rtnvec;
}
// insert incoming_vec to end of overall_vec
void add_vectors(std::vector<int>& overall_vec, const std::vector<int>& incoming_vec) {
    overall_vec.insert(overall_vector.end(), incoming_vec.begin(), incoming_vec.end());
}

请注意,我们在这里没有使用全局变量 std::vector 作为 global variables are generally quite bad,如果需要,最好通过引用或常量引用传递向量 - 或者将代码包装在一个类中或命名空间,如果情况适合任何一个。

【讨论】:

    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多