gpt4 book ai didi

c++ - vector vector 的迭代器无法处理一维 vector

转载 作者:行者123 更新时间:2023-11-28 03:43:56 27 4
gpt4 key购买 nike

在我的程序中,我有一个整数 vector 的 vector 。现在我想从 vector 的 vector 中取出一个 vector 并在另一个 vector 容器中对其进行操作,但是我得到了错误...

|error: conversion from '__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >' to non-scalar type 'std::vector<int, std::allocator<int> >' requested|

我正在尝试做的一个例子如下....

#include <vector>
using namespace std;

vector<vector<int> > k (13,5);

void some_funct() {
vector<int> new_v (k[2].begin(), k[2].end()); //This line is what throws the error
//here I do some stuff with new_v (e.g. sort it)
}

我不确定我做错了什么。我尝试了一些事情,比如将 begin() 和 end() 迭代器分配给 const 迭代器类型... vector<int>::const_iterator it = k[2].begin();但这也不起作用。

这应该可行(因为 k[x] 将是一个 vector )但我不知道出了什么问题。感谢您的帮助!

编辑:

修改我的代码后,我发现实际上有一个错误。而不是做 vector<int> new_v (k[2].begin(),k[2].end());我做了vector<int> new_v = (k[2].begin(),k[2].end()); .

我要感谢 Rob 让我主动将我的代码复制并粘贴到 SO 中,在那里我发现了我的错误。

感谢您的帮助!

最佳答案

很难知道,因为您还没有将您的实际代码发布到问题中。我怀疑您将项目中的代码错误地复制到了 Stack Overflow 中。

您项目中的违规行如下所示:

vector<int> new_v = (k[2].begin(), k[2].end()); 

注意额外的 =

您正在使用 vector::iterator 类型的表达式初始化 new_v,这将不起作用。但是,您在 SO 中输入的语句起作用:

vector<int> new_v (k[2].begin(), k[2].end()); 

这也是:

vector<int> new_v = vector(k[2].begin(), k[2].end());

或者其中之一:

vector<int> new_v(k[2]);
vector<int> new_v = k[2];

参见 https://ideone.com/uK8Xg以及相应的错误信息。

关于c++ - vector vector 的迭代器无法处理一维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8283423/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com