Function 如何设置一个函数来返回指向C+中向量的指针+;?

Function 如何设置一个函数来返回指向C+中向量的指针+;?,function,visual-c++,pointers,Function,Visual C++,Pointers,我需要帮助找出一些代码。我需要一个函数,用给定的字符串加载向量并返回指针。我计划用它来生成多个向量,然后用指针来显示它们 我不知道如何设置函数返回指针和以后显示向量。请仅在包含//此处所需帮助的行上提供建议 #include <iostream> #include <string> #include <vector> using namespace std; int pointerReturner (string str1, string str2) //

我需要帮助找出一些代码。我需要一个函数,用给定的字符串加载向量并返回指针。我计划用它来生成多个向量,然后用指针来显示它们

我不知道如何设置函数返回指针和以后显示向量。请仅在包含//此处所需帮助的行上提供建议

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

using namespace std;

int pointerReturner (string str1, string str2) //HELP NEEDED HERE
{
    vector<string> vList;
    vList.push_back(str1); 
    vList.push_back(str2); 
    return vList; //HELP NEEDED HERE
}

int main(int argc, char* argv[]) {

    vector<string> vMakeList1;
    vMakeList1 =pointerReturner("Honda","Toyota");//HELP NEEDED HERE
    for (vector<string>::iterator n=vMakeList1.begin(); n!=vMakeList1.end();++n)
    {
        cout<<*n<<endl;
    }

    vector<string> vMakeList2;
    vMakeList2=pointerReturner("Chrysler","Ford");//HELP NEEDED HERE
    for (vector<string>::iterator n=vMakeList2.begin(); n!=vMakeList2.end();++n)
    {
        cout<<*n<<endl;
    }

    cin.get();
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
int pointerReturner(字符串str1,字符串str2)//此处需要帮助
{
向量向量表;
列表。推回(str1);
列表。推回(str2);
return vList;//此处需要帮助
}
int main(int argc,char*argv[]){
向量vMakeList1;
vMakeList1=pointerReturner(“本田”、“丰田”);//此处需要帮助
对于(向量::迭代器n=vMakeList1.begin();n!=vMakeList1.end();++n)
{

cout您必须使用新运算符动态分配向量。否则,向量只是一个自动变量,在函数pointerReturner结束后会被销毁。您还必须将此函数的返回类型从int更改为指向向量的指针(vector*)。 但是,如果动态分配对象,则必须使用delete操作符显式销毁它,否则分配的内存将永远不会释放,这将导致内存泄漏

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

using namespace std;

vector<string>* pointerReturner (string str1, string str2)
{
    vector<string> *vList = new vector<string>();
    vList->push_back(str1); 
    vList->push_back(str2); 
    return vList;
}

int main(int argc, char* argv[]) {

    vector<string> *vMakeList1;
    vMakeList1 = pointerReturner("Honda","Toyota");
    for (vector<string>::iterator n=vMakeList1->begin(); n!=vMakeList1->end();++n)
    {
        cout<<*n<<endl;
    }
    delete vMakeList1;

    vector<string> *vMakeList2;
    vMakeList2=pointerReturner("Chrysler","Ford");
    for (vector<string>::iterator n=vMakeList2->begin(); n!=vMakeList2->end();++n)
    {
        cout<<*n<<endl;
    }
    delete vMakeList2;

    cin.get();
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
vector*pointerReturner(字符串str1、字符串str2)
{
向量*vList=新向量();
vList->push_back(str1);
vList->push_back(str2);
返回列表;
}
int main(int argc,char*argv[]){
向量*vMakeList1;
vMakeList1=指针式旋转器(“本田”、“丰田”);
对于(向量::迭代器n=vMakeList1->begin();n!=vMakeList1->end();++n)
{

coutSee也是我的编辑,一旦不再需要,你必须记住删除分配的向量。你能为后代编辑、替换为和吗?当然:)现在它应该可以编译了,这与我删除分配的向量有关系吗?你可以随时删除它,但是删除它后,你就不能再使用它了(如果您尝试分割,则肯定会发生错误)。删除对象时,您将获得它使用的内存。如果您不删除对象,则指向该对象的指针将丢失(如使用其他值覆盖该对象时)在程序完成之前,这些内存将永远不会被回收。对于两个简单的向量,它似乎并不多,但这是始终记住删除对象的规则,否则程序的内存使用将无限增长,直到崩溃。