Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在指向抽象类的指针向量上使用转换_C++_Transform - Fatal编程技术网

C++ 在指向抽象类的指针向量上使用转换

C++ 在指向抽象类的指针向量上使用转换,c++,transform,C++,Transform,我在以下代码上遇到SEGFULT: 我有一个带有方法的抽象类A virtual bool Ok() const; 现在,我有下面的向量 std::vector<A*> v; 不幸的是,我总是在第二条线路上遇到故障,我不明白为什么。用标准的C++循环替换转换调用修复了StEngEngt。有什么想法吗?这可能很愚蠢,但我会直接回答我自己的问题。在点击“发布你的问题”前不久,我发现了这个问题,我想,既然我已经键入了所有内容,我也可以发布答案,这样其他人可能会从中受益: 答案是,resu

我在以下代码上遇到SEGFULT:

我有一个带有方法的抽象类
A

virtual bool Ok() const;
现在,我有下面的向量

std::vector<A*> v;

不幸的是,我总是在第二条线路上遇到故障,我不明白为什么。用标准的C++循环替换转换调用修复了StEngEngt。有什么想法吗?

这可能很愚蠢,但我会直接回答我自己的问题。在点击“发布你的问题”前不久,我发现了这个问题,我想,既然我已经键入了所有内容,我也可以发布答案,这样其他人可能会从中受益:


答案是,
results
向量是空的,因此插入
results.begin()
是一件非常愚蠢的事情。相反,使用std::back\u inserter(results)一切正常

这可能很愚蠢,但我会直接回答我自己的问题。在点击“发布你的问题”前不久,我发现了这个问题,我想,既然我已经键入了所有内容,我也可以发布答案,这样其他人可能会从中受益:


答案是,
results
向量是空的,因此插入
results.begin()
是一件非常愚蠢的事情。相反,使用std::back\u inserter(results)一切正常

results向量为空,
transform
不知道您希望将结果推送到该向量上,而不是覆盖现有序列

用正确的大小初始化
结果
向量:

std::vector<bool> results(v.size());

results
向量为空,
transform
不知道您希望将结果推送到该向量上,而不是覆盖现有序列

用正确的大小初始化
结果
向量:

std::vector<bool> results(v.size());

谢谢事实证明,我自己的解释是相当混乱和错误的。当然,你完全正确!我发现了如何纠正我自己的解释。当然,一旦我能做到,我会把你的答案标记为正确答案。谢谢。事实证明,我自己的解释是相当混乱和错误的。当然,你完全正确!我发现了如何纠正我自己的解释。当然,一旦我可以这样做,我会将你的答案标记为正确答案。调整结果大小和使用
begin()
也可以。请记住,
vector
有很多错误。调整结果大小和使用
begin()
也可以。请记住,
vector
有很多错误。
std::transform(v.begin(), v.end(), std::back_inserter(results), std::mem_fun(&A::Ok));