【问题标题】:Locate a char inside a tridimensional array of strings在字符串的三维数组中找到一个字符
【发布时间】:2013-04-26 15:46:06
【问题描述】:

我有一个字符串的三维数组,我想创建一个函数来计算矩阵中有多少个字符串在位置 k 处具有字符 c。我做了这个功能:

#include <vector>
#include <string>
using namespace std;

typedef vector <string> Row;
typedef vector <Row> Matrix;

int numer_of_words (const Matrix& m, char c, int k) {
    int sum = 0;
    int rows = m.size();
    for (int i=0; i < rows; ++i) {
        int words = m[i].size();
        for (int j=0; j < words; ++j) {
            string s = m[i][j];
            if (s.length() <= k) {
                if (s[k] == c) ++sum;
            }
        }

    }
    return sum;
}

换句话说,当 s[k] = c(如果 s[k] 存在)时 sum 应该增加。我没有收到编译错误,但代码不起作用。

【问题讨论】:

  • 我认为他在将代码转换为英文时有一堆错字,很可能代码在他的机器上运行。
  • 是的,这是一个错字对不起,我不得不从另一种语言翻译它
  • 好的,我刚刚编辑了它,我认为没有错别字了
  • @很快我改变了它,我得到了这个错误“你的程序太慢了,或者它可能永远不会停止。后一种情况的最常见原因是试图访问无效的内存引用,使用内存过多(包括递归堆栈)、浮点异常和打印过多输出。”
  • @Buradi:哇……谁说的?

标签: c++ string search matrix char


【解决方案1】:
if (s.length() <= k) {
    if (s[k] == c) ++sum;
}

只有当s 的长度小于 或等于k 时,您才可以访问s[k],这与您想要的相反。条件应该是s.length() &gt; k

【讨论】:

  • 同样的事情,即使我删除了第一个条件,我也会得到同样的错误
猜你喜欢
  • 2021-06-12
  • 1970-01-01
  • 1970-01-01
  • 2015-07-25
  • 1970-01-01
  • 2014-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多