| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 394 人关注过本帖
标题:请教一个vector的问题
只看楼主 加入收藏
sl_bccn
Rank: 2
等 级:论坛游民
帖 子:6
专家分:12
注 册:2012-3-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
请教一个vector的问题
请教一个vector的问题,
看到一段代码是这样定义的

struct STstStr
{
.......
}
std::vector<STstStr>& vec(void) {
    static std::vector<queued_canon> tmpVec;
    return tmpVec;
}

请问:
1. 这样定义和直接std::vector<STstStr> vec有什么区别?
2. tmpVec在此起何作用
搜索更多相关主题的帖子: void return 
2012-03-31 16:52
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
给个实例 自己动手调试下 看看
程序代码:
#include <vector>
using namespace std;

vector<int>& vec()
{
    static vector<int> i(10, 9);

    return i;
}

int main()
{
    vector<int> i;

    i = vec();

    return 0;
}
+++++++++++++++++++++++++++
+++++++++++++++++++++++++++
#include <vector>
using namespace std;

vector<int>& vec()
{
    vector<int> i(10, 9);

    return i;
}

int main()
{
    vector<int> i;

    i = vec();

    return 0;
}

 
2012-03-31 18:49
sl_bccn
Rank: 2
等 级:论坛游民
帖 子:6
专家分:12
注 册:2012-3-31
收藏
得分:0 
回复 2楼 寒风中的细雨
std::vector<STstStr>& vec(void)
{
    static std::vector<STstStr > tmpVec;
    return tmpVec;
}
里面的肯定要static ,为的是保证单例vector。
我想知道的是
定义1:
std::vector<STstStr>& vec(void)
{
    static std::vector<STstStr > tmpVec;
    return tmpVec;
}
和定义2:
static std::vector<STstStr > vec;或者std::vector<STstStr > vec;
之间有什么区别,
是否定义成引用的形式存在某种优点?
2012-03-31 21:19
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:15 
给个实例 自己动手调试下 看看
程序代码:
#include <iostream>
using namespace std;

class CTest
{
public:
    CTest(){
        cout << "CTest()..." << endl;
    }
    CTest(const CTest &nTest){
        cout << "CTest(const CTest &nTest)..." << endl;
    }
};

void GetInstance(CTest &nTest)
{
    nTest;

    return;
}

int main()
{
    CTest nTest;

    GetInstance(nTest);

    return 0;
}
************************
************************
#include <iostream>
using namespace std;

class CTest
{
public:
    CTest(){
        cout << "CTest()..." << endl;
    }
    CTest(const CTest &nTest){
        cout << "CTest(const CTest &nTest)..." << endl;
    }
};

void GetInstance(CTest nTest)
{
    nTest;

    return;
}

int main()
{
    CTest nTest;

    GetInstance(nTest);

    return 0;
}

2012-03-31 22:27
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
函数前面的static关键字 是函数的作用域范畴  可以搜索关键字 有很多的解说
2012-03-31 22:32
sl_bccn
Rank: 2
等 级:论坛游民
帖 子:6
专家分:12
注 册:2012-3-31
收藏
得分:0 
回复 5楼 寒风中的细雨
应该就是传说中的单例模式了,基本弄清了,谢谢
2012-04-01 09:39
快速回复:请教一个vector的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017724 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved