今天写了一段代码要求实现:
从标准输入读取字符串并将他们存储为类模板(vector)对象,并从类模板中将其输出。
程序编译后提示有4个警告如下:
warningC4786: 'std::reverse_iterator<std::basic_string<char,std::char_traits<char>,std::allocator<char> >*,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::basic_string<char,std::char_traits<char>,std::allocator<char> > &,std::basic_string<char,std::char_traits<char>,std::allocator<char> > *,int>' : identifier was truncated to '255' chara
cters in the debug information
我是初学者,这个警告好像是内存出了问题,请大家帮我大概解释一下这里的提示是什么意思。
还有一个问题,我可能是少引用了一个std命名空间中的操作,所以在编译过程中总是出错,但是加上using namespace std;后就能编译通过了。请大家帮我看一下是缺了哪个std中的操作。
代码如下:
#include<iostream>
#include<string>
#include<vector>
using namespace std;
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main()
{
vector<string> text;
string word;
while(cin>>word)
{
text.push_back(word);
}
for(vector<int>::size_type index=0;index!=text.size();index++)
cout<<text[index]<<" ";
cout<<endl;
return 0;
}
还有我刚开始学习C++,代码中有什么其他的不足希望大家多多斧正。
main函数的应用程序的入口函数指的是while(cin>>word){text.push_back(word);}吗?如果是的话说他不能定义成模板函数,这是为什么呢?这样做程序可以正常运行,会带来哪些潜在的威胁呢?还有您推荐的以查相关的书籍《thinking in C++》《stl 源码剖析》在网上可以找到电子版吗?或者哪些是值得推荐仔细研读的。不然为了一个问题去买两本书个人觉得有点事倍功半的意思。望指教。
我知道使用using namespace std;是包含下面的操作,只是在编写头文件的时候,所有的引用于std的操作需要通过using std::XXX的方式声明。我想知道如果去掉using namespace std;而全部改为using std::XXX声明,我的代码中缺少什么。
追答我试过了,目前你代码里面不用using namespace std;采用你的方式也能编译和执行,不缺少什么.
本回答被提问者采纳高分求助一个C++问题(急!!!)
1、vector是模板类,必须指定类型才能用,比如vector<long> 2、array是保留字,不能用作变量名,至少在vc2008下是这样的,所以我改成了my_array 3、vector::size_type,同1问题,也得给出类型vector<long>::size_type 4、 for(vector::size_type i=array.size();i>=0;--i)这句判断是有问...
C++,vector模板类的问题? std::vector<PointT, Eigen::aligned_allocator...
template< class T, class Allocator = std::allocator<T>> class vector;有两个模板参数,T 是元素类型,而 Allocator 负责提供 vector 需要用到的动态内存。其中 Allocator 参数有默认值,一般的使用不需要指定这个参数。但有时对内存有特殊需求,就需要提供自己定义的内存管理类。把容器操作和...
C++:vector对象的初始化
C++中的vector类是一个容器,专门用于存储同类型的对象,每个对象都有唯一的索引。它实际上是编译器根据模板生成的,模板是一种编译时的抽象,实例化时会指定生成的具体类型。初始化vector对象的方式与string相似,常见的有拷贝初始化和列表初始化。拷贝初始化通过圆括号传递,如v1,它的容量被初始化。而...
求C++大神解答一下关于vector的小问题
大概就是这个意思吧。第一个输出的是1,因为a可以表示数组的第一个元素的地址,所以可以像指针一样解引用然后使用(相应的*(a+1)输出的就是2)。而vector对象vi是一个模版类对象,没有重载*号,不能像指针一样使用。
C++ vector用法是什么?
vector容器类型\\x0d\\x0a vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。\\x0d\\x0avector的构造\\x0d\\x0a \\x0d\\x0a函数原型:\\x0d\\x0atemplate\\x0d\\x0a explicit vector(); \/\/ ...
c++中vector容器是一个模板类,可以存放任何类型的对象请问存放的到底...
看你具体存放的类型,如果是普通值类型如(int,double)等,存的就是它的值。如果是指针类型(int*,void*)等,也一样就是这个指针。如果是类类型如(std::string)等,就是它个一份拷贝。
C++类内包含vector成员变量,vector中的元素存储在堆区还是栈区?_百度...
new T就是在堆区创建一个类T的对象,因为v是类T的数据成员,v自然是存放在堆区。delete p时v会自动释放。
C++类模板问题
vector<T> data, int maxsize);vector<T> getData();};template <class T>Stack<T>::Stack(vector<T> data, int maxsize):_data(data), _maxsize(maxsize){}template <class T>vector<T> Stack<T>::getData(){return _data;}\/\/给你写了个大概,你按照这个根据自己需求再写写看 ...
C++中vector使用不当出现的错误
vector内部有一个指向分配了的内存的指针 你copy过去造成多个vector指向堆上同一块内存 这样在析构的时候就会对同一块内存释放两次 出错是在所难免的 STL容器的使用原则之一就是:不要使用CopyMemory,memcpy之类的函数来作无差别拷贝,毕竟容器不是单纯的C结构体 ...
c++ 中的&vector和&vector[0]为什么不相同?
vector是一个模板类,像这样声明的:template<typename t> class vector { \/\/...};而你代码中的v是将类型参数t指定为int类型时的这个类的一个对象,&v是一个对象的地址,它的类型是vector<int>*,而&v[0]是一个int类型的变量的地址,它的类型是int*,它们当然不相同。