- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我自己解决了 Accelerated C++ 的问题,这是我遇到的第一个问题。
问题是编写一个能够生成 permuted index 的程序。从一组线。
下面的代码有两个函数:permutedIndex5_1,它是排序的“main()”函数,以及 permuteLine5_1,它接受给定的行(以及对已经排列的行的 vector 的引用)并旋转排列给定的行,添加 vector 的每次旋转。
我遇到的问题是排列后的行在标准输出上打印不正确。我在 permuteLine5_1 中包含了几个 3 条调试语句来测试要打印的第一个和最后一个字符串,这些打印语句的结果显示了应该被打印出来的内容,但是打印出来的内容是完整的不同。
我的直觉是,这可能与我删除该函数中的迭代器有关,但我不确定如何纠正它。无论如何,我们将不胜感激。
编辑:读取的文本文件的内容是:
The quick brown fox
The slow brown fox
The quick blue dog
#include <vector>
#include <string>
#include <cctype>
#include <iostream>
#include <fstream>
#include <sstream>
using std::fstream;
using std::ios;
using std::istringstream;
using std::vector;
using std::string;
using std::cin;
using std::cout;
using std::endl;
void permuteLine5_1(vector< vector<string> >& lines, vector<string> curLine)
{
for(int i = 0; i < curLine.size(); i++)
{
vector<string>::iterator curBeginStrItr = curLine.begin();
string curBeginStr = *curBeginStrItr;
curLine.erase(curBeginStrItr);
curLine.push_back(curBeginStr);
cout << "The first string in the current line is : " + *(curLine.begin()) << endl;
cout << "The first string in the current line is VIA INDEXING IS : " + curLine[0] << endl;
cout << "The last string in the current line is : " + *(curLine.rbegin()) << endl;
for(int j = 0; j < curLine.size(); j++)
{
cout << curLine[j];
}
cout << endl;
lines.push_back(curLine);
}
}
void permutedIndex5_1()
{
vector< vector<string> > lines;
fstream fileLines;
fileLines.open("C:\\Users\\Kevin\\Desktop\\lines.txt", ios::in);
string curLine, curWord;
vector<string> curLineVec;
while(getline(fileLines, curLine))
{
cout << curLine << endl;
curLineVec.push_back("|");
istringstream strS(curLine);
while(getline(strS, curWord, ' '))
{
curLineVec.push_back(curWord);
cout << curWord << endl;
}
lines.push_back(curLineVec);
curLineVec.clear();
}
vector< vector<string> > permuted;
for(int i = 0; i < lines.size(); i++)
{
permuteLine5_1(permuted, lines[i]);
}
sort(permuted.begin(), permuted.end());
/*Code below prints out permutations. Commented out because
permuting function does not work properly
for(int i = 0; i < permuted.size(); i++)
{
vector<string> curVec = permuted[i];
for(int j = 0; j < curVec.size(); j++)
{
cout << curVec[j] << ' ';
}
cout << endl;
}*/
}
最佳答案
我认为您的迭代器删除没问题,因为您首先制作了字符串的真实拷贝,随后不会使用您的无效迭代器。
我会将排列简化为...
for(int i = 0; i < curLine.size(); i++)
{
string curBeginStr = curLine[0];
curLine.erase(curLine.begin());
curLine.push_back(curBeginStr);
但是,我认为真正的问题在于排序,我有点惊讶它的编译:
sort(permuted.begin(), permuted.end());
您正在尝试对字符串 vector 的 vector 进行排序 - 这意味着排序算法需要以某种方式比较两个字符串 vector 以确定顺序。我认为它无法做到这一点,您需要提供自定义排序谓词来执行您想要的精确比较。
<罢工>
感谢 Chris 的更正。
关于C++ : Why isn't my (permuted index) code printing out correctly?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4329132/
我已经盯着它看了好几个小时了,想不出解决办法;我通常使用正则表达式处理这种类型的验证,但我正在尝试使用内置解决方案进行更改(显然,我不经常这样做): private static double pro
有什么区别 grep -isn "String\.format" -R . 和 grep -isn String\.format -R . 当我使用后者时,结果包括String format和Stri
我有一部固件为 4.3 的 iPhone 3GS。我下载了 3.1.3 固件,并希望使用 Organizer 恢复 iPhone。但!我收到以下错误: “此设备不符合所请求的版本。” 知道出了什么问题
我创建了一个小界面: import ... abstract class IController { void navigateTo(BuildContext context, String ro
基础this Question我使用扩展方法在 dart 中创建了一个枚举: enum TagVisibility { public, shared, private, } extensi
我在 Play 商店中放置了一个应用程序,我的 friend 正在运行 4.1(Nexus 7),在尝试安装我的应用程序时收到以下消息:“您的设备与此版本不兼容”。这是为什么来的?请任何人帮助我。 M
我在 Play 商店中放置了一个应用程序,我的 friend 在两台设备上运行 4.0.3,在尝试安装我的应用程序时收到以下消息:“您的设备与此版本不兼容”。 一台设备允许安装,另一台不允许。我允许
#!/usr/bin/env perl use warnings; use 5.12.2; my $c = 'f'; # could be a number too if ( $c eq 'd' ||
我正在编写一个Cocoa应用程序,我想实现一个全局热键功能。我实现了 Waffle Software 的 ShortcutRecorder.framework,并向我的 xib 添加了一个 custo
当我在开发该应用程序时,我点击了“运行”,一旦应用程序启动,它就会在打开启动屏幕之前卡住,并向我显示“应用程序没有响应,您想关闭它吗” 对话。!! !我什至没有打开闪屏类。!我在 OnCreate 中
大约 12 小时前,我尝试使用“beautiful jekyll”创建个人博客。 '。我遵循最简单的三步方法来运行一个基本的博客,但是,每次我输入我的网站链接时,我都会得到 There isn't a
我正在解析制表符分隔的文件。有几列没有被识别为数字,即使它们显然是数字。当我尝试总结这些值时,会显示错误:Argument ""97""isn't numeric in addition (+) 并且
我有两个模型:posts 和 likings 它们具有一对多关系(因此,一个帖子有很多喜欢)。 Likings 模型还有一个 isActive 字段,它显示喜欢是主动的还是被动的。 我想获得(排序)获
我的 android 模拟器(没有 play store 的 api 30)不时显示这个错误对话框: 我点击“关闭应用程序”,屏幕瞬间变黑,然后一切恢复正常。 发生这种情况时,我会在 Logcat 中
我正在尝试使用 Electron 构建 Windows 和 Mac OS 应用程序,但遇到了障碍。 简而言之,如果我尝试在 Mac OS Big Sur 上直接使用 Electron 运行应用程序(而
use List::MoreUtils 'uniq'; print join ", ", sort uniq ("b", "a", "a"); 结果参数“a”在排序中不是数字... print joi
background: ShaderMask( shaderCallback: (rect) { return LinearGradient( begin: Ali
我正在尝试创建一个多项选择应用程序来计算正确和错误答案的数量。 一切都呈现良好,但应用程序无法正常工作: 用户的选择并不能定义为正确或错误的答案。 问题不会更改为下一个问题。 我好像在onClick(
我正在开发一个需要帐户链接的 Google 助理应用程序,我已经到了这样的步骤:如果我说“与 [我的应用程序名称] 交谈”,我会取回一张卡片带有文本“Link [my app name] to Goo
编译时出现以下错误: MenuNavigationApp.c:58: error: array type has incomplete element typeMenuNavigationApp.c:
我是一名优秀的程序员,十分优秀!