Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
声明我的字符向量数组时发生编译错误 过去我在C++网上做过一些自我学习,但放弃了,直到我买了一本教科书,然后再给它一次。在我过去的研究中,我从来没有读过向量数组的任何东西(或者我读过也不记得了,谁知道呢)_C++_Arrays_For Loop_Vector - Fatal编程技术网

声明我的字符向量数组时发生编译错误 过去我在C++网上做过一些自我学习,但放弃了,直到我买了一本教科书,然后再给它一次。在我过去的研究中,我从来没有读过向量数组的任何东西(或者我读过也不记得了,谁知道呢)

声明我的字符向量数组时发生编译错误 过去我在C++网上做过一些自我学习,但放弃了,直到我买了一本教科书,然后再给它一次。在我过去的研究中,我从来没有读过向量数组的任何东西(或者我读过也不记得了,谁知道呢),c++,arrays,for-loop,vector,C++,Arrays,For Loop,Vector,不管怎么说,它说,像常规数组一样,可以为任何数据类型创建向量数组,我正在尝试创建一个char向量数组,我遇到了一些编译错误。看一看 我想要一个26个的数组,其中包含字母表中所有大写的字母。我想是65比91。如果有更简单的方法用字母初始化数组,我有兴趣学习这种方法 #include <vector> #include <iostream> using namespace std; int main() { vector <char> vchChar(2

不管怎么说,它说,像常规数组一样,可以为任何数据类型创建向量数组,我正在尝试创建一个char向量数组,我遇到了一些编译错误。看一看

我想要一个26个的数组,其中包含字母表中所有大写的字母。我想是65比91。如果有更简单的方法用字母初始化数组,我有兴趣学习这种方法

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

int main()
{
    vector <char> vchChar(26, 65);

    for (int iii = 0; iii < vchChar.size(); iii++ )
    {
        for (int jjj = 65; jjj < 91; jjj++)
        {
            vchChar(iii) = jjj;
            cout << "vchChar(" << iii+1 << ") is:\t" << vchChar(iii) << endl;
        }
        //cout << "vchChar(" << iii+1 << ") is:\t" << vchChar(iii) << endl;
    }

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
载体vchChar(26,65);
对于(int iii=0;iii您的代码中至少存在以下问题:

  • 设置向量元素不是由myVector(index)完成的,而是由myVector[index]完成的,因此基本上是由

  • 您正试图使用
    vchChar(iii)
    打印数组的一个元素,但应使用该方法

  • 这并不重要,但在这种特殊情况下,您可以使用迭代器模式遍历向量,而不是处理索引。即使不这样做,也不必对变量名使用
    iii
    jjj
    而不是常规的
    i
    j

  • 我更喜欢使用
    size\u t
    vector::size\u type
    作为循环计数器,将其中一个计数器与向量大小进行比较

  • 因为有嵌套循环,所以多次设置元素

  • 不必要地以与默认值不同的方式构造向量

  • 您使用的是硬编码整数,而不是实际字符

因此,正确的代码如下所示:

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

int main()
{
    vector <char> vchChar;
    for (char c = 'A'; c <= 'Z'; ++c)
        vchChar.push_back(c);

    for (vector<char>::size_t i = 0; i < vchChar.size(); ++i)
        cout << "vchChar(" << i+1 << ") is:\t" << vchChar.at(i) << endl;

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
向量vchChar;

对于(char c='A';c,代码中至少存在以下问题:

  • 设置向量元素不是由myVector(index)完成的,而是由myVector[index]完成的,因此基本上是由

  • 您正试图使用
    vchChar(iii)
    打印数组的一个元素,但应使用该方法

  • 这并不重要,但在这种特殊情况下,您可以使用迭代器模式遍历向量,而不是处理索引。即使不这样做,也不必对变量名使用
    iii
    jjj
    而不是常规的
    i
    j

  • 我更喜欢使用
    size\u t
    vector::size\u type
    作为循环计数器,将其中一个计数器与向量大小进行比较

  • 因为有嵌套循环,所以多次设置元素

  • 不必要地以与默认值不同的方式构造向量

  • 您使用的是硬编码整数,而不是实际字符

因此,正确的代码如下所示:

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

int main()
{
    vector <char> vchChar;
    for (char c = 'A'; c <= 'Z'; ++c)
        vchChar.push_back(c);

    for (vector<char>::size_t i = 0; i < vchChar.size(); ++i)
        cout << "vchChar(" << i+1 << ") is:\t" << vchChar.at(i) << endl;

    return 0;
}
#包括
#包括
使用名称空间std;
int main()
{
向量vchChar;

对于(char c='A';c我看不出你的代码有任何意义

#include <iostream>
#include <vector>
#include <numeric>

int main()
{
    std::vector<char> vchChar(26);

    std::iota( vchChar.begin(), vchChar.end() , 'A' );

    for ( char c : vchChar ) std::cout << c << ' ';
    std::cout << std::endl;

    return 0;
}
考虑到使用幻数65或91是个坏主意。例如,如果程序将在IBM大型机中运行,那么结果将是意外的,因为存在另一种编码系统,即EBCDIC而不是ASCII

至于声明

vchChar(iii) = jjj;

那么它是无效的。表达式
vchChar(iii)
意味着使用一个参数调用运算符函数,该参数未在类
std::vector

中定义。我看不出您的代码有任何意义。如果我正确理解了,您需要的是以下内容

#include <iostream>
#include <vector>
#include <numeric>

int main()
{
    std::vector<char> vchChar(26);

    std::iota( vchChar.begin(), vchChar.end() , 'A' );

    for ( char c : vchChar ) std::cout << c << ' ';
    std::cout << std::endl;

    return 0;
}
考虑到使用幻数65或91是个坏主意。例如,如果程序将在IBM大型机中运行,那么结果将是意外的,因为存在另一种编码系统,即EBCDIC而不是ASCII

至于声明

vchChar(iii) = jjj;

表达式
vchChar(iii)
表示使用一个参数调用运算符函数,该参数未在类
std::vector
中定义,您不需要嵌套循环

{
    vector<char> vchChar;

    for (char letter = 'A'; letter <= 'Z'; ++letter) {
        vchChar.push_back(letter);
    }

    for (int i = 0; i < (int) vchChar.size(); ++i) {
        cout << vchChar[i]; 
    }
}
{
向量vchChar;

对于(char letter='A';letter,不需要嵌套循环

{
    vector<char> vchChar;

    for (char letter = 'A'; letter <= 'Z'; ++letter) {
        vchChar.push_back(letter);
    }

    for (int i = 0; i < (int) vchChar.size(); ++i) {
        cout << vchChar[i]; 
    }
}
{
向量vchChar;

对于(char letter='A';请在您的帖子中提及iota来自C++11及更高版本。@Laszlo Papp为什么我必须提及这一点?!据我所知,现在是2014年。您真的认为每个人都在使用2014年的技术吗?不管怎样,请忽略我的建议。@Laszlo Papp。谢谢。我会考虑您的建议。好的,hop令人遗憾的是,这并不是你在没有任何解释的情况下将否决票作为一种报复。人们抱怨没有解释的否决票太糟糕了,但是他们在没有任何解释的情况下开始了一些报复,尤其是他们抱怨的。:)请在你的博文中提到iota来自C++11及更高版本。@Laszlo Papp为什么我要提到这个?!据我所知,现在是2014年。你真的认为每个人都在使用2014年的技术吗?不管怎样,请忽略我的建议。@Laszlo Papp。谢谢。我会考虑你的建议。好的,希望不是你ting是一种没有任何解释的报复。人们抱怨没有解释的反对票太糟糕了,但是他们开始了一些没有任何解释的报复,尤其是他们抱怨的。:)操作符[]听起来读起来有误。你也会收到int vs.si的警告(希望如此)