C++ C++;使用变换(绑定)分割数字
如何使用transform将数字列表除以2?我原以为这段代码可以做到,但它只将整个列表中的数字1除以2,所以我肯定完全理解错了。有人能帮我吗?:)C++ C++;使用变换(绑定)分割数字,c++,transform,bind,divide,C++,Transform,Bind,Divide,如何使用transform将数字列表除以2?我原以为这段代码可以做到,但它只将整个列表中的数字1除以2,所以我肯定完全理解错了。有人能帮我吗?:) 列表v(5,1); 名单d; d、 调整大小(v.size()); 转换(v.begin(),v.end(),d.begin(),bind(divides(),占位符::_1,2)); 库特 在您的示例中,没有理由使用向量上的列表 除非您绑定到C++98,否则您可以执行转换(…,…,[](T&val){val/=2;}) std::cin.igno
列表v(5,1);
名单d;
d、 调整大小(v.size());
转换(v.begin(),v.end(),d.begin(),bind(divides(),占位符::_1,2));
库特
在您的示例中,没有理由使用向量上的列表
除非您绑定到C++98,否则您可以执行转换(…,…,[](T&val){val/=2;})代码>
std::cin.ignore()
类似于系统(“暂停”)代码>但与平台无关
那么,您可以用五个元素初始化列表v
,所有元素都是整数1
。那么你还期望什么呢?好吧,我错了,我想我认为占位符::_1是一个常数(我在某处读到,_1代替了x,但我一定理解错了)。那么,我能做些什么来改变这一点,我想我需要的不是placehoders<代码>占位符::_1
是第一个参数的占位符,您正确使用了它。我说的是变量v
的构造,它是五个1
的列表。如果您打印出列表v
,您将看到它都是1
。因此,结果当然是所有分区都是1/2
。问题不在于如何使用transform
或bind
或诸如此类的东西,而在于源数据。哈哈,对不起,我太累了。我不知道我为什么那样做。那当然不行。有时候我真是太蠢了!谢谢
list<T> v(5, 1);
list<T> d;
d.resize(v.size());
transform(v.begin(), v.end(), d.begin(), bind(divides<T>(), placeholders::_1, 2));
cout << fixed << setprecision(2);
for (list<T>::iterator i = d.begin(); i != d.end(); i++){
std::cout << *i << endl;
}
system("pause");