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