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,所以此 ...
随机推荐
- 18Mybatis_动态sql_foreach
foreach: 向sql传递数组或List,mybatis使用foreach解析 应用场景: 在用户查询列表和查询总数的statement中增加多个id输入查询. sql语句如下: 两种方法: SE ...
- TabControl的SelectionChanged事件
DataGrid作为TabControl控件的TabItem的content元素. 当操作DataGrid的不同cell时,会引发了TabControl的SelectionChanged事件的问题. ...
- Android studio disign 问题
有些低配置的电脑使用android studio 写xml的时候,disign会一直处于rendering,有可能是xml使用的图片过大导致渲染不出来
- Verilog学习笔记基本语法篇(九)········ 任务和函数
task 和 function 说明语句分别用来定义任务和函数,利用任务和函数可以把函数模块分成许多小的任务和函数便于理解和调试.任务和函数往往还是大的程序模块在不同地点多次用到的相同的程序段.输入. ...
- [资料]PHP Yaf
QConShanghai2013-惠新宸-微博LAMP性能优化之路 Yaf-一个PHP扩展实现的PHP框架 Baidu Yaf
- js运动框架 step by step
开启setInterval定时器之前,请先清除之前的定时器 window.onload = function() { var btn = document.getElementById('btn'); ...
- Resource interpreted as Script but transferred with MIME type text/plain:
我用script做ajax跨域,请求返回的是个文本字符串,chrome提示:Resource interpreted as Script but transferred with MIME type ...
- OpenGL、Open Inventor、WebGL、Three.js、ARToolkit、JSARToolkit
[准备看的] http://www.hewebgl.com/ http://www.linuxdiyf.com/viewarticle.php?id=399205 http://blog.sina.c ...
- HDU3923-Invoker-polya n次二面体
polya定理.等价类的个数等于∑颜色数^置换的轮换个数 不可翻转的串当中.直接计算∑m^(gcd(n,i)) ,这里gcd(n,i)就是第i个置换的轮换数. 翻转的情况再分n奇偶讨论. n次二面体都 ...
- 浅析java类加载器ClassLoader
作为一枚java猿,了解类加载器是有必要的,无论是针对面试还是自我学习. 本文从JDK提供的ClassLoader.委托模型以及如何编写自定义的ClassLoader三方面对ClassLoader做一 ...