再问一下关于stl的问题,跟bind2nd有关,谢谢
时间:2008-07-24 14:55:11
来源:论坛整理 作者: 编辑:chinaitzhe
但我上面写的程序编译不通过,不知为什么,请教一下,谢谢哈
#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 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面