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,所以此 ...
随机推荐
- Redis集群知识解析
redis集群在启动的时候就自动在多个节点间分好片.同时提供了分片之间的可用性:当一部分redis节点故障或网络中断,集群也能继续工作.但是,当大面积的节点故障或网络中断(比如大部分的主节点都不可用了 ...
- 1140 Jam的计数法
1140 Jam的计数法 2006年NOIP全国联赛普及组 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Descri ...
- 【原创】有关Silverlight DataGrid双击事件的分析 完整分析 代码与示例
公司项目用的silverlight,而且silverlight一些技术 资料比较少.所以分享出来 给大家参考参考. 有关Silverlight中DataGrid 双击事件 的代码 如下: 1. 前台x ...
- WPF数据绑定Binding(二)
WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...
- WP老杨解迷:如何营造让人花钱的游戏
游戏是最好做也是最不好做的项目,游戏的好坏现在都是直接从数据来说话,Windows Phone的游戏应用同样不可能逃出这个行业准则,要说在市场里做的好,那就直接拿数据来说,几乎没人会去在乎游戏到底传达 ...
- 实现chrome扩展启动本地进程 - 补充
实现chrome扩展启动本地进程 - 补充 标签: chrome扩展启动本地程序访问本地磁盘 2014-10-17 11:42 6753人阅读 评论(17) 收藏 举报 分类: Chrome Plu ...
- 详解SpringMVC中Controller的方法中参数的工作原理[附带源码分析]
目录 前言 现象 源码分析 HandlerMethodArgumentResolver与HandlerMethodReturnValueHandler接口介绍 HandlerMethodArgumen ...
- java8新特性全面解析
在Java Code Geeks上有大量的关于Java 8 的教程了,像玩转Java 8--lambda与并发,Java 8 Date Time API 教程: LocalDateTime和在Java ...
- 我最优惠网系列(1)——HTML 解析类库HtmlAgilityPack
0. 序言 在开发我最优惠网的过程中,遇到一些问题和技术点,写出来和大家分享,也是我自己对近期工作的整理和记录,预计会有解析HTML类库.本地缓存.链接跳转和C#中执行js代码技巧等方面. 1. Ht ...
- node.js乱码问题【WebStorm环境】
昨天看了一个晚上的jade视频, 感觉就是我想要的东西, 相见恨晚, 赶紧在WebStorm这个IDE中,写代码,测试 /** * Created by xa87 on 2016/1/22. */ v ...