如何解决错误 C2440“正在初始化”:无法从“_Ty”转换为“_Objty”

埃亚尔·库茨

我正在尝试编写一种算法来查找具有特定请求总和的给定向量的子集。我正在尝试使用 Antti Laaksonen 的“竞争程序员手册”中描述的“中间相遇”技术。这是我的代码:

vector<int> subset_with_sum1(vector<int> set, int requested_sum) {
    int half = set.size() / 2;
    vector<int> set_a(set.begin(), set.begin() + half),
        set_b(set.begin() + half, set.end());
    auto subsets_a = get_subsets1(set_a),
        subsets_b = get_subsets1(set_b);
    vector<int> sums_a(subsets_a.size()), sums_b(subsets_b.size());
    transform(
        subsets_a.begin(),
        subsets_a.end(),
        sums_a.begin(),
        sum_vector
    );
    transform(
        subsets_b.begin(),
        subsets_b.end(),
        sums_b.begin(),
        sum_vector
    );
    for (int i = 0; i < sums_a.size(); i++)
        if (sums_a[i] == requested_sum)
            return subsets_a[i];
    for (int i = 0; i < sums_b.size(); i++)
        if (sums_b[i] == requested_sum)
            return subsets_b[i];
    for (int i = 0; i < sums_a.size(); i++)
        for (int j = 0; j < sums_b.size(); j++)
            if ((sums_a[i] + sums_b[j]) == requested_sum) {
                vector<int> temp(subsets_a.begin(), subsets_a.end());
                temp.insert(temp.end(),subsets_b.begin(), subsets_b.end());
                return temp;
            }
}

此代码产生标题中提到的错误。这是完整的错误:

Error   C2440   'initializing': cannot convert from '_Ty' to '_Objty'   PracticeIOI C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.24.28314\include\xmemory 671

这个错误出现在本网站的其他问题中,但总是与一些用户定义的类和指针有关,我都没有使用。在同样适用于微软的文档此外,由于错误发生在 STL 文件中,我什至不知道代码的哪一行导致了它。我怎样才能解决这个问题?

编辑:我没有包含一些运行函数所必需的代码,所以这里是:

vector<vector<int>> get_subsets1(vector<int> nums) {
    int full = 1 << nums.size();
    bitset<8 * sizeof(int)> set;
    vector<vector<int>> subsets;
    vector<int> temp;
    for (int i = 0; i < full; i++) {
        set = bitset<8 * sizeof(int)>(i);
        temp = vector<int>();
        for (int j = 0; j < nums.size(); j++)
            if (set[j])
                temp.push_back(nums[j]);
        subsets.push_back(temp);
    }
    return subsets;
}
int sum_vector(vector<int> vec) {
    return accumulate(vec.begin(), vec.end(), 0);
}
公民

这个问题是在这些行上:

vector<int> temp(subsets_a.begin(), subsets_a.end());
temp.insert(temp.end(),subsets_b.begin(), subsets_b.end());

这里temp是 类型vector<int>,但是subsets_asubsets_b是 类型vector<vector<int>>由于值类型分别为intvector<int>,因此它们不匹配,因此无法编译。

根据你所需要的,要么做temp一个vector<vector<int>>,或复制的各个int在各S-vectorsubsets_asubsets_btemp

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何解决git的“无法合并的错误”错误

decltype错误C2440无法从'int *'转换为'int *&'

错误C2440:'正在初始化':无法从'初始化列表'转换为'std :: vector <char *,std :: allocator <_Ty >>'

错误C2440:“正在初始化”:无法从

如何解决分割错误C ++

如何解决此错误消息“初始化错误(Eslint)。意外的标识符”?

如何解决“无法更改常量”错误

C ++错误C2440:“正在初始化”:无法从“类名”转换为“相同的类名”

mex编译错误C2440:“正在初始化”:无法从“ const mwSize *”转换为“ const int32_t *”

为什么在C ++中出现“初始化”:无法从“初始化列表”转换为“ _Objty”的错误?

如何解决solveODE中的“ dt <= dtmin。正在中止”错误

错误:无法解决:viewpager-如何解决?

const转发参考给出错误C2440:“正在初始化”:无法从“ const std :: string”转换为“ const std :: string &&”

错误C2440:“正在初始化”:无法从“ CTable”转换为“ CTable”

如何解决Vue-Formulate无法解决组件错误

如何解决错误:无法初始化主类选择。ClustererExecution

如何解决无法初始化设备hci0。错误?

如何解决“无法解决groupBy”错误消息?

如何解决“从'char *'到'char'的无效转换”错误?

错误C2440:“ =”:无法从“ int *”转换为“ int **”

如何解决 Fragment 无法转换为 Context 错误?

错误 C2440:“=”:无法从“const char *”转换为“LPCWSTR”

如何解决未初始化的常量搜索::错误

如何解决 SQLException - Spring Boot 中的数据转换错误

如何解决c中的分段错误?

如何解决jmeter(cli)中的转换错误

C2440:“正在初始化”:无法从“A<double>”转换为“A<double>”

我如何解决此错误无法在初始化程序中访问实例“小部件”

如何解决视图中的 SQL 转换错误