2::error:vector subscript out of range
vector<string> vector1;//定义之后,不能直接通过下面的方式赋值,这样会导致越界 vector[0] = "aa"; vector[1] = "bb";方法一: 首先使用 tagSeq.resize(n) 语句将vector的size调整为初始 长度,然后就可以通过以上方式进行赋值了。 方法二: 还有另外一种办法,那就是vector<string> vector之后,进行调用vector的push_back("aa")方法向vector中 添加数据,该方法会自动申请内存,这样vector的size就可以逐步增加,不会越界。
推荐方法二。
3: fatal error LNK1168: 无法打开 C:\Users\Administrator\Documents\Visual Studio 2010\Projects\C++primer\Debug\C++primer.exe 进行写入 原因:上次编译生成的界面未关掉,关掉黑框即可 4:error:vector iterator not dereferencable 此处 vector<int> list1; for (it1; it1 != map1.end();++it1)//it1为首迭代器 { list1.push_back(it1->second); } vector<int>::iterator it2 = list1.begin();//定义叠迭代器一定要记得初始化!!! cout<<*it2; 和: vector<int> list1; vector<int>::iterator it2 = list1.begin();//定义叠迭代器一定要记得初始化!!! for (it1; it1 != map1.end();++it1) { list1.push_back(it1->second); } cout<<*it2; 两个程序运行一下就知道,之前的vector还没有被初始化,此时使用begin()迭代器肯定是吹出问题的。 这种问题1:越界,[begin,end),左闭合区间 2:未初始化,调用无意义 3:list等迭代器也可能会出现这种问题,一样处理。
5:error:map/set iterator not dereferencable
原因:在使用迭代器时,递增操作之后其指向就变了,再用就不正确了,查看你的迭代器有没有在循环中或别处修改过 6:error :无法从“std::_Vector_iterator<_Ty,_Alloc>”为“std::reverse_iterator<_RanIt>” 原因:迭代器未初始化就开始使用了,检查下代码中的迭代器定义之处是否初始化 7:error:map/set iterator not incrementable 原因:在接下来的遍历中使用了已经被释放掉的迭代器,于是悲剧发生了 8::error C2248: “std::unique_ptr<_Ty>::unique_ptr”: 无法访问 private 成员(在“std::unique_ptr<_Ty>”类中声明)原因:unique_ptr不能拷贝和赋值
9:error:不能将参数 1 从“const char [12]”转换为“std::string &” 原因:注意C风格字符串和string的区别,可以用string("字符串")来解决 10:system("pause");的含义,暂停黑窗口 system() 是调用系统命令; pause 暂停命令; 在进行Visual Studio 下的C/C++编程的时候,在运行程序查看输出效果时,会出现窗口闪一下就关闭的情况。 在C语言中一般通过添加getchar(); 在C++中一般在main函数中的return之前添加system("pause");这样就可以看清楚输出的结果,pause会输出"请按任意键继续.