c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常
#include"stdafx.h"
#include"string"
#include<iostream>
#include<vector> #include<string.h>
using namespace std; int add_color(vector<string> v1, vector<int> v2, string s)
{
cout << v1.size() << " " << v2.size() << endl;
//cout << "test" << endl;
if (v1.size() == )
{ v1.push_back(s);
v2.push_back();
// cout << v1[0];
} else
{
int i = ;
for (; i<v1.size();)
{
if (!strcmp(v1[i].c_str(), s.c_str()))
{
v2[i]++;
//i++;
break;
}
else
{
i++;
} }
if (i == v1.size())
{
v1.push_back(s);
v2.push_back();
}
} cout << v1.size() << " " << v2.size() << endl; return ;
} int find_max(vector<string> v1, vector<int> v2)
{
int max;
max = ;
for (int i = ; i<v2.size() - ; i++)
{
for (int j = i + ; j<v2.size(); j++)
{
if (v2[i] <= v2[j])
{
max = j;
}
}
}
return max;
} int main(void)
{
int N;
cout << "input N:";
cin >> N; vector<string> v1;
vector<int> v2;
string s; while (N)
{
//string s;
cin >> s;
add_color(v1, v2, s);
//add_color(v1, v2, s);
cout << v1.size() << endl;
N--;
} cout << endl;
int max = find_max(v1, v2);
cout << v1[max] << endl; }
在调用add_color的时候,无法正常执行下去,将函数体直接写在循环里就没有问题
问了别人,是参数调用的问题
C++参数调用有三种,值传递,指针传递,引用传递
值传递实际上只是传递的实际参数的一个副本,并不是原参数,这样的原因是可以实现对实际参数的保护;
指针传递,则传递的是地址;
引用传递,对形参的操作等同于对实参的操作,即传递的不会是实参的副本,而是实参;
具体的例子可以看一下http://www.cnblogs.com/Romi/archive/2012/08/09/2630014.html
c++ 函数调用在进入下一个循环的时候会再次初始化参数,将函数体直接写进去就正常的更多相关文章
- 010——MATLAB运行错误跳到下一个循环
(一)MATLAB运行错误跳到下一个循环 :%文件的个数 try %运行的程序放到这里 catch continue%假如上面的没法执行则执行continue,到下个循环 end
- if continue的用法(跳过本次循环,执行下一个循环)
Python continue 语句跳出本次循环 当需要跳过本次循环的时候,使用continue能跳过本次循环,直接下一个循环 如下脚本: for url in alllink: if url == ...
- sql 游标 跳出循环 和进入下一个循环
1 使用break 结束整个循环. 2 使用continue 结束当前循环,进入下已循环. 注意:使用continue造成死循环,是因为continue后又执行与上次相同的fetch了. 解决办法 ...
- Linux CFS调度器之pick_next_task_fair选择下一个被调度的进程--Linux进程的管理与调度(二十八)
1. CFS如何选择最合适的进程 每个调度器类sched_class都必须提供一个pick_next_task函数用以在就绪队列中选择一个最优的进程来等待调度, 而我们的CFS调度器类中, 选择下一个 ...
- SQL Server获取下一个编码字符串的实现方案分割和进位
我在前一种解决方案SQL Server获取下一个编码字符实现和后一种解决方案SQL Server获取下一个编码字符实现继续重构与增强两篇博文中均提供了一种解决编码的方案,考虑良久对比以上两种方 ...
- js获取上一个月、下一个月格式为yyyy-mm-dd的日期
/** * 获取上一个月 * * @date 格式为yyyy-mm-dd的日期,如:2014-01-25 */ function getPreMonth(date) { var arr = date. ...
- js,onblur后下一个控件获取焦点判断、html当前活跃控件、jquery版本查看、jquery查看浏览器版本、setTimeout&setInterval
需求: input控件在失去焦点后直接做验证,验证通不过的话,显示相应错误.但是如果失去焦点后点击的下个控件是比较特殊的控件(比如,退出系统),那么不执行验证操作,直接退出系统(防止在系统退出前,还显 ...
- 回车跳到下一个EDIT
1.按下方法procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key ...
- 讲解下for循环的用法,加深记忆
引子 这是一段很简单的代码,但是即便是这么简单的东西,这里我们还是需要说一下. 关于for循环整个执行流程就是,先执行var i=10,然后到了第二个语句,判断10是否大于0,很明显为true,所以此 ...
随机推荐
- JS判断数据是否是JSON类型
var isJson = function(obj){ var isjson = typeof(obj) == "object" && Object.pro ...
- 两种方式判断类的存在→className getAttribute
通过className获取 var p = document.getElementsByTagName('p'); for(var i = 0;i <p.length;i++){ if(p[i] ...
- 第一章 初识MVC4
1.MVC模式 Mvc将应用程序分离为三个部分: Model:是一组类,用来描述被处理的数据,同时也定义这些数据如何被变更和操作的业务规则.与数据访问层非常类似. View:是一种动态生成HTML的模 ...
- C#文件和文件文件夹按时间、名称排序-顺序与倒序
对于文件和文件夹有多种排序方式,常用的就是按创建或修改时间.按文件名排序.在 C# 中,按时间和文件名排序都十分简单,用数组提供的排序方法 Array.Sort() 一行代码就可以搞定,当然也可以用常 ...
- ASP.Net MVC如何访问的静态页面
MVC开发中,因为View文件夹下的web.config文件默认会把任何方法的请求的任何文件,路径都交给 System.Web.HttpNotFoundHandler 去处理.起到Controller ...
- 完美隐藏win7文件和文件夹
有没有一种方法即使使用隐藏模式也不能查看, 没错可以用上帝模式....... 啥是Win7上帝模式?不知道的看看..... <<<<<<<<<&l ...
- Caffe学习系列(14):初识数据可视化
// 首先将caffe的根目录作为当前目录,然后加载caffe程序自带的小猫图片,并显示. 图片大小为360x480,三通道 In [1]: import numpy as np import m ...
- 超全!iOS 面试题汇总
之前看了很多面试题,感觉要不是不够就是过于冗余,于是我将网上的一些面试题进行了删减和重排,现在分享给大家.(题目来源于网络,侵删) 1. Object-c的类可以多重继承么?可以实现多个接口么?Cat ...
- SpringMVC 中HttpMessageConverter简介和Http请求415 Unsupported Media Type的问题
一.概述: 本文介绍且记录如何解决在SpringMVC 中遇到415 Unsupported Media Type 的问题,并且顺便介绍Spring MVC的HTTP请求信息转换器HttpMessag ...
- js之数组,对象,类数组对象
许久不写了,实在是不知道写点什么,正好最近有个同事问了个问题,关于数组,对象和类数组的,仔细说起来都是基础,其实都没什么好讲的,不过看到还是有很多朋友有些迷糊,这里就简单对于定义以及一下相同点,不同点 ...