代码问题| Vector内数据处理2 5C

题目是两个包含整数的vector对象,编写一段程序,检验其中一个vector对象是否是另一个的前缀。我使用了迭代器和while循环进行容器数据处理,但是报错"vector iterators incompatible"。请问问题具体出在哪里?
代码如下:

#include<iostream>
#include<string>
#include<vector>
using namespace std;

int main()
{
    vector<int> vec1 = { 0,1,1,2 };
    vector<int> vec2 = { 0,1,1,2,3,5,8 };
    auto min_vec = (vec1.size() < vec2.size()) ? vec1 : vec2;
    auto p = vec1.begin();
    auto q = vec2.begin();
    while (p != min_vec.end()&&q!=min_vec.end())
    {
        if (*p != *q) {
            cout << "FALSE" << endl;
            break;
        }
        ++p; 
        ++q;
    }
    if(q == min_vec.end())
    cout << "TRUE" <<endl;
    system("pause");
    return 0;
}

0

1个回答

突然发现问题所在:
因为我返回的是size较小的vector对象,而定义的指针是分别指向两个vector对象的。所以

 while (p != min_vec.end()&&q!=min_vec.end())

这个condition的不合理的。

看来这题不能用迭代器来做,应该用下标来处理。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
代码问题| Vector内数据处理
题目是使用条件运算符将成绩划分为high pass/pass/low pass/fail四种,n成绩用一个容器存储,Finalgrade用另一个容器存储,最后显示。nn我使用迭代器遍历容器内数据,但是没有输出,请问问题出在哪?非常感谢!nn代码如下: nn```n vector scores = 60,54,70,86,90,64,98;n auto p = scores.begin();n vector finalgrade = ;n auto q = finalgrade.begin();n n while (q != finalgrade.end() && p != scores.end())n n *q = (*p > 90) ? "high pass"n : ((*p <= 90) && (*p>75)) ? "pass"n : (*p < 60) ? "fail" : "low pass";n ++p;n cout << *q++ << endl;n n```nnnnnn
数据处理的两个基本问题---汇编学习笔记
数据处理的两个基本问题 计算机是进行数据处理、运算的机器,那么有两个基本的问题就包含在其中: 要处理的数据在什么地方? 要处理的数据有多长? 我们定义两个描述性符号:reg和sreg。 reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di。 sreg的集合包括:ds、ss、cs、es。 8.1 bx、si、di和b...
vector里面有指针
指针里面的值变化,vector里面的值也跟着变化,这是lian连带效应。 #include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt; using namespace std; int main() { vector&amp;lt;int *&amp;gt; b; int c = 1; int *a =&amp;amp;c; ...
浅谈模板类vector和array
在这里对模板类做非常非常简单的总结,以便于自己需要时有货可查。 模板类vector ① 是一种动态数组,可在运行阶段设置vector对象的长度,也可以在末尾添加数据,在中间插入数据 ② 使用new和delete来管理内存,但是是自动执行这两个操作的。 ③ 必须 #include<vector> 和包含在名称空间std中 ④ 简单使用:vector<typeName> vb(n_elem);
在std::vector下,不同内存分配方式效率简单比较
#include "stdafx.h"#include #include #include #include templateclass alloc {public: typedef std::size_t size_type; typedef std::ptrdiff_t difference_type; typedef T* poin
C++vector实现约瑟夫环
//向量求解约瑟夫环 #include #include #include using namespace std; int main() { int n, m; cin >> n >> m; vector veci; for (int i = 1; i { veci.push_back(i); } int cnt = 1; vector::itera
新手读源码__Vector,扩容不单单是2倍
前言 上一次分析集合的源码还是4.20,一晃半个月过去了,由于hashMap中遇到了红黑树,于是我决定去看下二叉排序树,AVL,B,B+,RB-Tree,这几种树,然后这10几天中因为《深入理解JVM》到了,也基本上都在看,看到了200页。后悔当时数据结构没好好学,AVL之流都没咋学。不过放下负担,好好去学才是正解,下面进入正题Vector 开篇疑问 在我看过的资料中,或者博文中,都会简...
Vector中两个元素值的交换
swap是可以交换vector的变量 代码如下 int   main(int   argc,   char*   argv[]) { std::vector   sentence; sentence.push_back( "hello "); sente
vector扩容面试题总结
vector底层数据结构是一个动态数组。       默认构造的方式是0, 之后插入按照1 2  4  8  16 二倍扩容。注(GCC是二倍扩容,VS13是1.5倍扩容。原因可以考虑内存碎片和伙伴系统,内存的浪费)。扩容后是一片新的内存,需要把旧内存空间中的所有元素都拷贝进新内存空间中去,之后再在新内存空间中的原数据的后面继续进行插入构造新元素,并且同时释放旧内存空间,并且,由于vector 空...
全子集问题(subset)
全子集问题的三种解法: 1.回溯法 回溯是经典的解法,有固定的模板,用递归实现。 class Solution { public: vectorvectorint>> subsets(vectorint>& nums) { sort(nums.begin(), nums.end()); vectorvectorint>> subs; v
关于C++ vector等容器排序问题
C++ vector排序参考 https://blog.csdn.net/upc_xbt/article/details/53305962注意:#include&amp;lt;iostream&amp;gt; #include&amp;lt;vector&amp;gt; #include&amp;lt;algorithm&amp;gt; using namespace std; int main() { int num=0; c...
C++面试题:看代码找错—vector容器的使用
C++面试题:看代码找错—vector容器的使用 考点:理解vector容器的使用 出现频率:★★★★         typedef vector IntArray;         IntArray array;         array.push_back( 1 );         array.push_back( 2 );         array.push_back(
C++:采用vector实现二分查找及其变种总结
主要分为六种情况,闭区间,半开区间,中位值在循环之外的半开区间二分查找首个序列,中位值在循环之外的半开区间二分查找末尾序列,以及中位值在循环之外的完全开区间二分查找首个序列和中位值在循环之外的完全开区间二分查找末尾序列:#include &amp;lt;iostream&amp;gt; #include &amp;lt;vector&amp;gt; #include &amp;lt;assert.h&amp;gt; using namesp...
【C++】循环删除vector等容器内的元素
最近在写程序时经常会遇到将容器内符合某种条件的元素进行删除的操作,为了方便,现在将关键代码写在这里 auto iter = contours.begin(); while (iter != contours.end()) { if ((*iter).size()>150) iter = contours.erase(iter); else ++iter; }
Xml表中Vector3类型数据取出
项目中某些预置体需要很多个,做成assetBundle包后相同的引用只需要打包一份,解包后再实例化,然而实例化出来之后,他们的位置都在同一个地方, 在场景中我们肯定会把它们放置在不同的地方,这个时候就需要把它们的位置信息,角度信息全部存储在一个xml表中或者其他格式文档都行,个人习惯了 Xml表的使用,放在了Resources文件夹下。表中的内容如图: 可以看到,有着名字当作索引,还有位
vector在多线程下的问题,迭代器失效造成程序崩溃。
最近在做项目的过程中,遇到STL中vector的多线程访问问题。问题大概是这样的:有一个全局的vector,一个写进程对该vector进行插入操作(push_back()),同时有一个读进程在监视该vector的内容并对其进行显示(操作:size(), at(i)),没有进行任何的线程同步,程序的编译没有任何问题,却一直出现运行时错误,主要是数组越界。 当时的考虑时:虽然vector不支持多线程,...
C++ std::vector元素的内存分配问题
来看一个问题: 在使用C++ STL的vector时,下面三种写法有什么不同呢?其内存分配是怎么样的呢?std::vector<T> vec; std::vector<T>* Vec = new std::vector<T>(); std::vector<T*> vec;首先,说结论吧: 对于std::vector<T> vec;vec在栈上(stack),而其中的元素T保存在堆上(heap);
Python数据处理(含代码)
Python数据处理,包括代码,学习Python的童鞋可以下载看看哈,PDF+代码
GPU(CUDA)学习日记(六)------ vector,动态数组,引用,编程调试经验总结等一些比较琐碎的记录
昨天,开发的GPU程序终于调通了第二个部分,中间经历了学习CUDA框架和编程、设计系统框架、完成编程等过程。遇到了很多问题,其中包括:vector数组的resize问题,动态数组的堆栈损坏问题,函数引用与变量取地址的问题,不同工程之间调用DLL的问题,基于CUDA的底层工程生成静态库出错的问题,将.cu文件按照“CUDA C/C++”方式编译时只能选择“多线程DLL调试”的问题(说明CUDA依赖第
C++ vector长度扩展机制的探究
源起: C++ Primer 第五版,Exercise 9.38 Write a program to explorer how vectors grow in the library you use. 环境: WIN 7 + VS 2008 32bit 测试代码: #include #include #include using namespace std;
vector clock向量时钟算法
向量时钟策略并没有给出解决版本,留给用户自己去解决,只是告诉你目前数据存在冲突。 http://blog.csdn.net/hellochenlu/article/details/53264544 NTP协议 https://www.zhihu.com/question/19994133 Quorum机制介绍 https://www.cnblogs.com/hapjin/p/
C++算法之海量数据处理方法的总结分析
海量数据处理中常用到的技术 1. Bloom Filtering基本的Bloom Filtering支持快速的插入和查找操作,是一种hash表技术。基本的数据结构非常简单,容量为m的位数组,k个hash函数,将输入的n个元素存储在位数组里面。每次插入一个新的元素,先计算该元素的k个hash指,将位数组对应hash值位置为1. 查找某个元素时,同样的先计算k个hash值,然后查询看是否对应位数组中得...
C++ Primer Plus 书之--C++ vector模板类及常用方法和iterator简介
使用vector模板 可使用&amp;lt;type&amp;gt;支出要存储的数据类型, 也可以使用初始化参数来指出需要多少空间: #include &amp;lt;vector&amp;gt; using namespace std; // 含有5个int的vector vector&amp;lt;int&amp;gt; ratings(5);  int n; cin &amp;gt;&amp;gt; n; vector&amp;lt;double&amp;gt; ...
Fisher Vector
基于Fisher Vector的人脸检测 ,内用vlfeat库,附详细的代码
vector扩容问题
扩容原理概述 新增元素:Vector通过一个连续的数组存放元素,如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素; 对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了 ; 初始时刻vector的capacity为0,塞入第一个元素后capacity增加为1; 不同的编译器实现的扩容方式不一样...
C++菜鸟学习笔记系列(8)——标准库类型vector
C++菜鸟学习笔记系列(8) 本期主题:标准库类型vector 在上一篇C++菜鸟学习笔记系列(7)博客中我们对标准库类型 string 进行了相关介绍。vector也是一种非常重要的标准库类型,在这一篇博客中作者将从定义和初始化、添加元素、使用索引等方面来介绍一些关于C++语言标准库类型 vector 的使用方法。 标准库类型 vector 表示对象的集合,其中所有对象的类型都相同。与strin...
vector扩容2倍与1.5倍
如果按2倍扩容,第n次扩容需要的空间恰好比前n-1扩容要求的空间总和要大,那么即使在前n-1次分配空间都是连续排列的最好情况下,他们留下的空间也不足以分配给此次扩容。 理想分配方案是是在第N次resize()的时候能复用之前N-1次释放的内存,但选择两倍的增长比如像这样: 1,2,4,8,16,32,... 可以看到到第三次resize(4)的时候,前面释放的总和只有1+
如何快速交换两个向量容器中的内容
#include "stdafx.h" #include #include #include using namespace std;   voidPrintInt(const int&nData) {     cout } int_tmain(int argc, _TCHAR* argv[]) {     vectorint> vecInt1,ve
STL vector(四) vector 扩容为什么要以1.5倍或者2倍扩容
我们知道,vector 在需要的时候会扩容,在 VS 下是 1.5倍,在 GCC 下是 2 倍。那么会产生两个问题: (1)为什么是成倍增长,而不是每次增长一个固定大小的容量呢? (2)为什么是以 2 倍或者 1.5 倍增长,而不是以 3 倍或者 4 倍等增长呢? 1、第一个问题 :        如果已成倍方式增长。假定有 n 个元素,倍增因子为 m; 完成这 n 个元素往一个 vect
木块问题
#include #include #include #include using namespace std; const int maxn=30; int n; vectorpile[maxn]; //找pile和height void find_block(int a,int& p,int& h){ for(p=0;p<n;p++) for(h=0;h<pi
为什么vector capacity 自增长都是2倍这样增加?
//待补充
Josephus约瑟夫环问题STL模版类vector实现
问题描述: 已知n个人(以编号1,2,3…n分别表示)围坐在一张圆桌周围。从编号1开始报数,数到k的那个人出列;他的下一个人又从1开始报数,数到k的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 例如n=10,k=3时,输出的出列顺序是3,6,9,2,7,1,8,5,10,4。程序代码#include<iostream> #include<vector> using
STL中的vector如何处理才可以避免内存碎片
答: 使用vector内的reserve函数。 reserve函数主要是为提升vector的效率而存在的,如果已知vector的大小,可以在初始化时为vector执行reserve操作,分配足够的内存空间,之后数据加入vector就不会造成内存再次分配,也可以减少内存碎片。另外reserve操作只分配内存空间,并不执行元素初始化,因此效率上要比resize要高,假如vector中存储的是复杂的对
通过索引查找二个容器中相同的元素,并分别显示相同的元素 以及删除相同元素之后的容器的内容
    最近遇到这样一个问题 有两个容器,想通过比较得到第一个容器中的元素是否能在第二个容器中找到相同的值 并返回该值在第二个容器中的索引。刚开始想到的是使用find_if函数,由于自己C++学的不够透彻,对仿函数以及谓词这些概念还不是很了解,所以选择使用find函数,然后加上循环。首先,在一个容器中寻找指定的元素并返回其索引,代码如下:#include &amp;lt;iostream&amp;gt; #inc...
计算vector中所有元素之和
计算vector中所有元素之和/* 编写程序,处理一个vector<string> ,其元素都表示整型值/浮点型,计算vector中所有元素之和 */
关于vector定义二维数组的问题
今天在使用vector的二维数组,遇到一个问题。 目的是想使用vector定义一个确定维数的数组,即是数组中每个元素都为一个容器。去网上搜索了一下格式vectorvector > shit  (注意string后的尖括号后面哟哟个空格),否则被认为格式错误。  而要确定维数 则必须像上述那样vectorvector > shit(360)    (注意此处是圆括号 不是尖括号)。使用时候
vector 扩容为什么要以1.5倍或者2倍扩容
转载:http://blog.csdn.net/dengheCSDN/article/details/78985684 我们知道,vector 在需要的时候会扩容,在 VS 下是 1.5倍,在 GCC 下是 2 倍。那么会产生两个问题: (1)为什么是成倍增长,而不是每次增长一个固定大小的容量呢? (2)为什么是以 2 倍或者 1.5 倍增长,而不是以 3 倍或者 4 倍等增长呢? 1、第
R语言学习笔记(三)数据处理
R语言之数据处理
面试宝典上的vector二次析构问题
今天看面试宝典CHAP 9 STL模板与容器时,有一道面试题讲vector二次析构出错的,看了解答还不是很明白,经过google之后终于搞清楚了,记录如下: 面试宝典上的vector二次析构问题: #include   using namespace std;  class CDemo{  public:  CDemo():str(NULL){}  ~CDemo(
如果一个class中包含一个vector容器,那么sizeof(class_name)的值应该怎么算?
#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt; #include &amp;amp;amp;lt;vector&amp;amp;amp;gt; using namespace std; class CDocument{ public: int i; vector&amp;amp;amp;lt;long long&amp;amp;amp;gt; vec; }; int main(){ CDocument mydoc;
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python数据处理 云计算数据处理