再问一下关于stl的问题,跟bind2nd有关,谢谢

时间:2008-07-24 14:55:11   来源:论坛整理  作者:  编辑:chinaitzhe
我想把"hh"跟str="abcdefg"中的每一个字符都组合起来,例如:hha,hhb,hhc,hhd,hhe,hhf,hhg

但我上面写的程序编译不通过,不知为什么,请教一下,谢谢哈


#include <string>
#include <vector>
#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
class fun:public binary_function <char,string,string>{
public:
fun() {}
// 用得到的字符组成新的string
string operator() (char& e,string& ee) {
stringstream s;
s < <ee < <e;
return s.str();
}
};
int main(){
string str("abcdefg"),ss("hh");
vector <string> vect(str.size());
transform(str.begin(), str.end(), vect.begin(), bind2nd(fun(),ss));
for (vector <string>::iterator it = vect.begin(); it != vect.end(); it) {
cout < < *it < < endl;
}
system("pause");
}


网友回复:什么编译器,什么编译错误?
浪费别人时间的帖子,其实就是浪费自己的时间。
网友回复:是dev c

编译的出错是:

789 d:\Program Files\DEV-CPP\include\c \3.4.2\bits\stl_algo.h instantiated from `_OutputIterator std::transform(_InputIterator, _InputIterator, _OutputIterator, _UnaryOperation) [with _InputIterator = __gnu_cxx::__normal_iterator <char*, std::basic_string <char, std::char_traits <char>, std::allocator <char> > >, _OutputIterator = __gnu_cxx::__normal_iterator <std::string*, std::vector <std::string, std::allocator <std::string> > >, _UnaryOperation = std::binder2nd <fun>]'
网友回复:“_UnaryOperation ”

网友回复:
C/C code





Code highlighting produced by Actipro CodeHighlighter (freeware)

http://www.CodeHighlighter.com/





class fun:public binary_function <char,string,string>{ 

public: 

    fun() {} 

    // 用得到的字符组成新的string 

    string operator() (const char& e,const string& ee)  const  { 

        stringstream s; 

        s <<ee <<e; 

        return s.str(); 

    } 

}; 

int main(){ 

    string str("abcdefg"),ss("hh"); 

    vector <string> vect(str.size()); 

    transform(str.begin(), str.end(), vect.begin(), bind2nd(fun(),ss)); 

    for (vector <string>::iterator it = vect.begin(); it != vect.end();   it)    { 

        cout << *it << endl; 

    } 

    system("pause"); 

} 

//你还缺一个#include <functional>




网友回复:ttkk兄编译通过了吗?我刚才加了functional,但是还是报一样的错误,难道是编译器的问题?
网友回复: string fun(char e, string ee)
{
stringstream s;
s < <ee < <e;
return s.str();
}


int main()
{
string str("abcdefg"),ss("hh");
vector <string> vect(str.size());
transform(str.begin(), str.end(), vect.begin(), bind2nd(ptr_fun(fun),ss));
for (vector <string>::iterator it = vect.begin(); it != vect.end(); it) {
cout < < *it < < endl;
}
system("pause");
return 0;
}

网友回复:呜呜

楼上真是太强了,无限敬仰ing

热泪盈眶啊

太谢谢了
网友回复:我的有错误吗,不可能把
vs2005没问题啊
网友回复:我的把你写的改了啊,你仔细看了吗
网友回复:ttkk兄,真的是不好意思啊,我以为就是要加个functianal,呵呵,我重新试了,可以编译,谢谢您啊
关键字:一下,stl,问题,bind,nd,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面