我希望得到一个新生成的向量,并通过调用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());
}
答案 0 :(得分:0)
首先,c ++中的void main()
很糟糕 - 它应该是int main()
。
其次,return vector;
中的语句function1()
虽然您可能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());
}
请注意,我们尚未在global variables are generally quite bad处使用全局std::vector
变量,通常情况下,当您需要时,通过引用或const引用传递向量通常会更好如果情况适合,则将代码包装在类或命名空间中。