Kar*_*anz 4 c++ codeblocks c++11
我是新的代码:: blocks并且在c ++中也很缺乏经验.我知道有很多关键字,我不应该用于变量名称,它们通常以不同的颜色显示,因为它们在visualstudio中.现在,当我将一些代码片段从旧的vs项目复制到一个新的代码:: blocks项目时,我的一些变量名称突然变色了.例如,在此代码中,变量begin和end现在以绿色显示,我不明白为什么.
int begin = 0;
int end = 4;
int myarray[end];
for (int i = begin; i < end; i++)
{
myarray[i] = i;
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,这段代码甚至不会编译,我会得到奇怪的"冲突声明"错误.我可以使用这些名称,还是以某种方式保留在code :: blocks中?我看了一些书,但据我所知,它们不是c ++关键词.是因为我现在正在使用c ++ 11吗?我正在使用ide和mingw编译器的v.12.11.谢谢您的帮助.
我从你的困惑中解脱出来,你还没有使用过STL容器......但是如果你是C++的新手,那可能是个好主意.不管怎么说,begin并end在任何C++标准没有关键字,无论是在C++ 11.但它们都是函数的名称,返回一个迭代器对象,用于遍历STL容器,如下所示:
vector<int> x = { 1, 2, 3, 4 };
vector<int>::iterator it;
for (it = x.begin(); it != x.end(); ++it)
{
cout << *it << endl;
}
Run Code Online (Sandbox Code Playgroud)
在C++日常实践中,这个概念是如此常用,这些名称被CodeBlocks列为"用户关键字".用户关键字通常为绿色,因此可以与语言关键字区分开来.如果这让您感到困扰,您可以自由操纵列表甚至完全删除它.只需从菜单栏中选择"设置" - >"编辑器",然后单击"语法突出显示"选项卡.在那里你可以做你喜欢的所有设置.获取手册以获取更多信息.
图片http://imageshack.us/a/img189/3956/m1qe.png
无论是否有语法高亮,您都不应该遇到编译错误.原因可能是,您的项目包含标准库标题,#include <vector>并且您的代码包含在using namespace std;某处.您可能使用预编译的标头 - 在这种情况下也检查它.
此外,我建议您查看标准库容器并试一试.它们比普通阵列有几个优点,但你最好自己发现.但是,不要让自己被这些迭代器吓倒 - 在C++ 11中你也可以编写
vector<string> y = { "Foo", "Bar" };
for (auto& str : y) cout << str << endl;
Run Code Online (Sandbox Code Playgroud)
相反,这也适用于你的数组
float z[] = { 0.5f, 1.5f, 2.5f, 3.5f };
for (auto& num : z) cout << num << endl;
Run Code Online (Sandbox Code Playgroud)