2008-06-25

std::for_each 调用本类的成员函数

std::for_each 是个好用的东西,不过在调用本类的成员函数时稍微遇到点问题。
在网上查找了N久,然后经过自己调试终于得到一个稍微简便的方法:
(结合 std::bind1st 和 std::mem_fun)


// coding by : h_Davy
//
#include <iostream>
#include <vector>

using std::out;

class Test
{
public:
    Test() {};

    void push(int i)
    {
        vi.push_back(i);
    }

    void show()
    {
        std::for_each(
                vi.begin(),
                vi.end(),
                std::bind1st(
                    std::mem_fun<void, Test, int>(
                        &Test::print1 ), this ) );
    }

private:
    std::vector<int> vi;

    void print1(int i)
    {
        cout << "> " << i << "\n";
    }
};


int main()
{
    Test t;

    t.push(123);
    t.push(456);
    t.push(789);

    t.show();

    return 0;
}

(以上代码在 GCC 4 中编译通过,并正常运行)

如果是 MS-VC6 稍微需要些修改:

  1. VC6 中似乎不支持 void 的返回值,所以那个成员函数的返回值改成 int 或 任何你觉得合适的类型。

  2. VC6 中应该将 std::mem_fun 改成 std::mem_fun1 。


如此,VC6 中能正常使用。

//EOF Read More...

2008-06-14

试用 VS.PHP

前几天搞了个 Vs.Php 来,今天试用了一下。

VS.PHP 是一个 PHP 开发的 IDE(基于M$提供的VS.NET) ,我下载的是 VS.Php.for.Visual.Studio.2005。
装好后像VC那样在提供一个新建工程的模板。新建工程再新建php文件后就可以写代码了。

不过比较奇怪的是,老是运行不起来~~
(按理说,安装好后Apache,PHP都自带了的啊)

最后发现是没能正常创建 httpd.conf 所致,配置:
Project => Properties => Configuration Properties => Debug => Advanced => Apache configuration template

将VS.PHP安装目录中带的 "httpd-template.conf" (httpd.conf模板文件) 设置到此处,然后就会在工程所在目录中根据该模板自动创建一个 .httpd.conf 文件。
然后运行成功。


—— 让我感觉到奇怪的是 php.ini 都能自动找到并创建,这个 httpd.conf 的模板怎么就没找到呢?好像其他人也没这样的情况~~ 难道和我用的是试用版有关?还是说是我的RPWT 囧?



//EOF Read More...