Function 对于_,每个向量的绑定向量都要调整大小
这是我的第一个问题。我放弃了,并将为此使用一个手滚函子,但我很好奇它应该如何做。下面的人为示例旨在通过使用空值填充向量,将向量中的所有向量调整为大小9。指示的行导致MingwGCC4.5.0抛出大量模板错误。我尝试了几种不同的排列,但只张贴了我认为“最接近正确”的代码。应该怎样写?注意,我想保留resize的两个参数版本Function 对于_,每个向量的绑定向量都要调整大小,function,bind,member,tr1,Function,Bind,Member,Tr1,这是我的第一个问题。我放弃了,并将为此使用一个手滚函子,但我很好奇它应该如何做。下面的人为示例旨在通过使用空值填充向量,将向量中的所有向量调整为大小9。指示的行导致MingwGCC4.5.0抛出大量模板错误。我尝试了几种不同的排列,但只张贴了我认为“最接近正确”的代码。应该怎样写?注意,我想保留resize的两个参数版本 #include <vector> using std::vector; #include <algorithm> using std::for_eac
#include <vector>
using std::vector;
#include <algorithm>
using std::for_each;
#include <tr1/functional>
using std::tr1::bind;
using std::tr1::placeholders::_1;
int main() {
vector<vector<void *> > stacked_vector(20);
for_each(stacked_vector.begin(),stacked_vector.end(),
bind(&std::vector<void *>::resize,_1,9,0/*NULL*/)); // voluminous error output
return 0;
}
#包括
使用std::vector;
#包括
使用std::for_;
#包括
使用std::tr1::bind;
使用std::tr1::占位符::\u 1;
int main(){
矢量叠加_矢量(20);
对于每个(堆叠的向量.begin(),堆叠的向量.end(),
bind(&std::vector::resize,_1,9,0/*NULL*/);//大量错误输出
返回0;
}
非常感谢您的输入。很难说没有看到错误输出(坦率地说,即使有错误输出)。但是,请尝试将NULL作为
void*
类型传递:static\u cast(0)
。否则,bind
返回的对象会尝试提供一个int值作为resize
的第二个参数,很难说没有看到错误输出(坦率地说,即使有了它)。但是,请尝试将NULL作为void*
类型传递:static\u cast(0)
。否则,bind
返回的对象将尝试提供一个int值作为resize
的第二个参数
#include <functional>
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
typedef std::vector<int> vec_int;
typedef std::vector<vec_int> vec_vec_int;
// Do this to make the _1 work
using namespace std::placeholders;
static const int FIRST_DIM = 5;
static const int SECOND_DIM = 10;
static const int DEFAULT_VALUE = 66;
vec_vec_int v(FIRST_DIM);
std::for_each(v.begin(), v.end(),
std::bind(&vec_int::resize, _1, SECOND_DIM, DEFAULT_VALUE));
std::cout << v[4][9];
return (0);
}
#包括
#包括
#包括
#包括
int main()
{
typedef std::向量向量int;
typedef std::vector vec_vec_int;
//这样做可以使_1正常工作
使用名称空间std::占位符;
静态常数int FIRST_DIM=5;
静态常数int SECOND_DIM=10;
静态常数int默认值=66;
vec_vec_int v(第一个尺寸);
std::for_each(v.begin(),v.end(),
std::bind(&vec_int::resize,_1,SECOND_DIM,DEFAULT_值));
std::cout试试这个
#include <functional>
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
typedef std::vector<int> vec_int;
typedef std::vector<vec_int> vec_vec_int;
// Do this to make the _1 work
using namespace std::placeholders;
static const int FIRST_DIM = 5;
static const int SECOND_DIM = 10;
static const int DEFAULT_VALUE = 66;
vec_vec_int v(FIRST_DIM);
std::for_each(v.begin(), v.end(),
std::bind(&vec_int::resize, _1, SECOND_DIM, DEFAULT_VALUE));
std::cout << v[4][9];
return (0);
}
#包括
#包括
#包括
#包括
int main()
{
typedef std::向量向量int;
typedef std::vector vec_vec_int;
//这样做可以使_1正常工作
使用名称空间std::占位符;
静态常数int FIRST_DIM=5;
静态常数int SECOND_DIM=10;
静态常数int默认值=66;
vec_vec_int v(第一个尺寸);
std::for_each(v.begin(),v.end(),
std::bind(&vec_int::resize,_1,SECOND_DIM,DEFAULT_值));
库特·阿姆农的答案对我很有用。对于任何寻找函子方法的人,我做了以下工作:模板类resize_函子{public:resize_函子(size_t size,t value):size_(size),value_(value){};模板void操作符()(C&container){container.resize(size_,value_)}private:size_t size_;t value_(stacked_vector.begin()、stacked_vector.end()、resize_函子(9u,0));阿姆农的答案对我很有用。对于任何寻找函子方法的人,我都做了以下工作:模板类resize_函子{public:resize_函子(size_t size,t value):size_u(size),value_u(value){};模板无效操作符()(C&container){container.resize(size,value})}private:size\u t size\uu;t value\uj;.................................对于每个(堆叠的\u向量.begin()、堆叠的\u向量.end()、调整大小的\u函子(9u,0));