C++ 如何基于向量中的值替换元素?

C++ 如何基于向量中的值替换元素?,c++,vector,C++,Vector,是否有一个与替换向量中的值类似的函数,如擦除 以下代码行当前删除BC中存在的任何值 vector<double> activeDof; for (int i = 0; i < BC.size(); i++) { activeDof.erase(find(activeDof.begin(), activeDof.end(), BC[i])); } 矢量主动自由度; 对于(int i=0;i

是否有一个与
替换
向量中的值类似的函数,如
擦除

以下代码行当前删除
BC
中存在的任何值

vector<double> activeDof;    
for (int i = 0; i < BC.size(); i++)
{
    activeDof.erase(find(activeDof.begin(), activeDof.end(), BC[i]));
}
矢量主动自由度;
对于(int i=0;i
这减少了向量的大小,并在以后将我的代码弄乱。我想做的是将BC中的值替换为零。因此,向量中的元素数仍然相同。我尝试使用替换功能,如下所示

vector<double> activeDof; 
for (int i = 0; i < BC.size(); i++)
{
    replace(activeDof.begin(),activeDof.end(),BC[i],0);
}
矢量主动自由度;
对于(int i=0;i
我仍然在“替换”下面收到一条错误消息。关于如何根据向量中的值替换元素,有什么建议吗

编辑:BC是另一个包含某些元素的向量。我想知道这个元素是否存在于向量activeDof中,如果存在,我想将其转换为0。

将中的“0”更改为“0.0”

replace(activeDof.begin(),activeDof.end(),BC[i],0);

您的实际问题是您不能正确地擦除元素,因为您没有正确地执行擦除操作

替换是一种很好的策略,但如果可以正确擦除该元素,则不需要替换

您可以按照下面提到的方式修复代码

#include<algorithm>
using namespace std;
vector<double> activeDof;
for (int i = 0; i < BC.size(); i++)

{
    activeDof.erase(std::remove(activeDof.begin(), activeDof.end(), BC[i])), activeDof.end());
    activeDof.shrink_to_fit();

}
#包括
使用名称空间std;
矢量主动自由度;
对于(int i=0;i
你的代码中的
BC
是什么?我想你把
BC
activeDof
混淆了吧?您正在对vector
activeDof
的元素执行替换,但您希望在
BC
中进行更改吗?“我想做的是用零替换BC中的值”?BC是另一个包含某些元素的向量
0
int
,而不是
double
。只需将其更改为
0.0
。请注意浮点比较。下一次,我们更希望看到错误消息而不是“红色摇摆线”语句。
0-0-0-0-0-0-7-8-
#include<algorithm>
using namespace std;
vector<double> activeDof;
for (int i = 0; i < BC.size(); i++)

{
    activeDof.erase(std::remove(activeDof.begin(), activeDof.end(), BC[i])), activeDof.end());
    activeDof.shrink_to_fit();

}