首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于函数传值有关问题~ 请大神指教

2013-04-07 
关于函数传值问题~ 请大神指教传入函数一个string数组,对其进行修改,如何能影响main函数中原来的数组?具体

关于函数传值问题~ 请大神指教
传入函数一个string数组,对其进行修改,如何能影响main函数中原来的数组?具体示例请看下面程序中的注释。


#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>
#include <set>
using namespace std;

#define MAX 10
template <class T>
int reduce(T ar[], int n)

set<T> s(ar, ar+n);//这里变成s[] = {"asd","qwe"};
return 1;
}

int main()

    long myarray[MAX] = {12, 12 ,5, 6, 11, 5, 6, 77, 11,12};
string st[MAX] = {"asd","asd","asd","qwe","asd","qwe","asd","qwe","asd","qwe"};
    int newsize = reduce(st,MAX);//但是这里返回主函数时,并没有对st造成修改,我应该如何修改函数的声明?
getch();
    return (0);
}

[解决办法]
set<T> s(ar, ar+n);//只是把数组ar的元素加到s里,本来就对st造不成影响,如果想对st修改那就在函数里把s的值逐个赋给st吧
int reduce(T ar[], int n)
{
    set<T> s(ar, ar+n);//这里变成s[] = {"asd","qwe"};
    int i=0;
    while(!s.empty())
    {
        ar[i++]=*(s.begin());
        s.erase(s.begin());
    }
    return 1;
}

[解决办法]
set<T> s(ar, ar+n);只是把数组ar的元素加到s里,本来就对st造不成影响。
应该把st的地址换成s的地址。。。
[解决办法]
同楼上。
set<T> s(ar, ar+n);只是定义一个set,同时把数组ar的元素加到s里,本来就对st造不成影响。

热点排行