求教!这个程序如何用C++实现?

soulover 2014-07-10 04:37:43
这个程序如何用C++实现,比如用链表、Vector、数组、map?

import java.util.Vector;

public class Demo {
//存储数据
private Vector<Vector<String>> Data;

public Demo() {
Data = new Vector<Vector<String>>();
}

//设置word1和word2为近义词
public boolean set(String word1, String word2) {
if (word1 == word2) {
return false;
}

int index1 = find(word1);
int index2 = find(word2);
if (index1 == -1 && index2 == -1) {
//两个都不在数据库中的情况
Vector<String> temp = new Vector<String>();
temp.add(word1);
temp.add(word2);
Data.add(temp);
}
else if (index1 != -1 && index2 == -1) {
//只有一个在数据库中1
Data.elementAt(index1).add(word2);
}
else if (index1 == -1 && index2 != -1) {
//只有一个在数据库中2
Data.elementAt(index2).add(word1);
}
else {
//两个都在数据库中
if (index1 != index2) {
//两个不在一行,则把index2中的数据合并到index1中
Vector<String> temp = Data.elementAt(index2);
for (int i = 0; i < temp.size(); i++) {
Data.elementAt(index1).add(temp.elementAt(i));
}
Data.remove(index2);
}
}
return true;
}

//判断word1和word2是否为近义词
public boolean is(String word1, String word2) {
if (word1 == word2) {
return true;
}

int index1 = find(word1);
int index2 = find(word2);
if (index1 == index2 && index1 != -1) {
return true;
}
return false;
}

//清除关系
public void clear() {
Data.clear();
}

// 在数据库中查找str在哪一行
private int find(String str) {
int ret = -1;
for (int i = 0; i < Data.size(); i++) {
Vector<String> temp = Data.elementAt(i);
for (int j = 0; j < temp.size(); j++) {
if (temp.elementAt(j) == str) {
return i;
}
}
}
return ret;
}

public static void main(String args[]) {
Demo a = new Demo();
a.set("a", "b");
a.set("c", "d");
a.set("b", "c");
System.out.print(a.is("a", "d"));
a.clear();
}
}
...全文
187 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
soulover 2014-07-22
  • 打赏
  • 举报
回复
我不是想翻印,是因为我看不懂java程序,所以想求教一下
eziowayne 2014-07-12
  • 打赏
  • 举报
回复
引用 2 楼 soulover 的回复:
[quote=引用 1 楼 zhao4zhong1 的回复:] 不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·……
我只是想学习一下C++,没有你说的这么复杂。[/quote] 赵老师说得很好啊,受教了。 如果你说只想学C++为何去弄一段java code?这不是成心让人误会嘛。
allenltiverson 2014-07-11
  • 打赏
  • 举报
回复
其实就是主要就在于容器的使用
whoho 2014-07-11
  • 打赏
  • 举报
回复
另:楼主太懒了!
whoho 2014-07-11
  • 打赏
  • 举报
回复
引用 7 楼 caozl 的回复:
c++ stl 有 vrctor list map set queue 等 都是模板 都有源码 参考c++stl源码剖析
别参考源码剖析了,看“the C++ standard library",或者任意gnu或者微软的STL头文件,里面有详细的注释
FightForProgrammer 2014-07-11
  • 打赏
  • 举报
回复
用c++里面的vector容器,用法基本上和java里面的差不多 add换成push_back elementAt换成下标操作符【】或者at()函数。 remove都是一样的 其他的代码改成适应c++的就ok了
caozl 2014-07-11
  • 打赏
  • 举报
回复
c++ stl 有 vrctor list map set queue 等 都是模板 都有源码 参考c++stl源码剖析
soulover 2014-07-10
  • 打赏
  • 举报
回复
详细一点吧,或者用链表实现!
yangyunzhao 2014-07-10
  • 打赏
  • 举报
回复
std::vector不够吗?
THU_Wm 2014-07-10
  • 打赏
  • 举报
回复
C++的STL里有vector,上面的代码基稍作修改就可以了。
soulover 2014-07-10
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·……
我只是想学习一下C++,没有你说的这么复杂。
赵4老师 2014-07-10
  • 打赏
  • 举报
回复
不要做A语言代码修改为B语言代码的无用功。 也不要做用A语言代码直接调用B语言代码库这样复杂、这样容易出错的傻事。 只需让A、B语言代码的输入输出重定向到文本文件,或修改A、B语言代码让其通过文本文件输入输出。 即可很方便地让A、B两种语言之间协调工作。 比如: A将请求数据写到文件a.txt,写完后改名为aa.txt B发现aa.txt存在时,读取其内容,调用相应功能,将结果写到文件b.txt,写完后删除aa.txt,改名为bb.txt A发现bb.txt存在时,读取其内容,读完后删除bb.txt 以上A可以替换为任何一种开发语言或开发环境,B可以替换为任何一种与A不同的开发语言或开发环境。 除非A或B不支持判断文件是否存在、文件读写和文件更名。 但是谁又能举出不支持判断文件是否存在、文件读写和文件更名的开发语言或开发环境呢? 共享临时文本文件这种进程之间的通讯方法相比其它方法的优点有很多,下面仅列出我现在能想到的: ·进程之间松耦合 ·进程可在同一台机器上,也可跨机,跨操作系统,跨硬件平台,甚至跨国。 ·方便调试和监视,只需让第三方或人工查看该临时文本文件即可。 ·方便在线开关服务,只需删除或创建该临时文本文件即可。 ·方便实现分布式和负载均衡。 ·方便队列化提供服务,而且几乎不可能发生队列满的情况(除非硬盘空间满) ·……

64,282

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧