secondsen 发表于 2010-12-21 20:37:31

关于向量的问题

我的是VS08

new project -> General -> Empty Project

我建立一个main.cpp放到工程里面以下是代码

#include <iostream>
#include <vector>
//要包含这个头文件
using namespace std;

int main(void)
{   
    vector<int> a(10);//定义了10个整数元素的向量,但没有给出初值,因而,其值是不确定滴
    vector<int> b(10,1);//定义了10个证书元素的向量,且给出每个元素的初值为1
    vector<int> c(b); //用另一个现成的向量来创建一个向量
    vector<int> d(b.begin(),b.begin() + 3);//定义了其值依次为b向量中第0到第2个元素的向量
    cout << " 1---   ";
    for (int i=0;i<d.size();i++)
      cout << d << ""; //使用下标形式,a是向量元素操作,和数组一样
    cout << &#39;\n&#39;;    cout << " 2---   ";
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";//使用遍历器方式,*it是指针间接形式,它的意思是it所指向的元素值
    cout << &#39;\n&#39;;    cout << " 3---   ";
    a.assign(b.begin(),b.begin()+3); //b向量的0~2元素构成向量赋给a
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;    cout << " 4---   ";
    a.assign(8,2); //使a向量中只含0-7元素,且赋值给2
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;    cout << " 5---   ";
    int x = a.back();//将a中最后一个元素值赋给整数变量x
    cout << "x = " << x << endl;
    cout << " 6---   ";
    int y = a.front(); //将a中第一个向量元素赋给整数变量y
    cout << "y = " << y << endl;
    cout << " 7---   ";
    a.clear();
    if (a.empty()) cout << "a is empty!" << endl;
    cout << " 8---   ";
    a.resize(5); //将向量元素个数调至5个,多删少补,其值随机
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;    cout << " 9---   ";
    a.resize(6,4); //将向量元素个数调至5个,多删少补,其值均为4
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;      cout << "10---   ";
    a.push_back(100);//在向量a最后插入一个元素,其值为100
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;cout << "11---   ";
    a.pop_back(); //删除a向量最后一个元素
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";

    for (int i=0;i<a.size();i++)
      a = i;

    cout << &#39;\n&#39;;    cout << "12---   ";
    a.erase(a.begin()+2);
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << ""; //删除第三个位置的元素
    cout << &#39;\n&#39;;    cout << "13---   ";
    a.insert(a.begin() + 3, 44); //在第四个位置插入一个元素
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;    cout << "13---   ";
    a.erase(a.begin()+2,a.begin()+4);//删除第三个位置到第四个位置
    for (vector<int>::iterator it = a.begin();it!=a.end();++it)
      cout << *it << "";
    cout << &#39;\n&#39;;    cout << "14---   ";
    if (a==b) //向量的比较操作,操作符还有!=,<,<=,>,>=,
      cout << "a equal b";
    else
      cout << "a not equal b";
    cin.get();
    return 0;
}

执行出来的倒是没问题,我的问题是这个

1>------ Build started: Project: Vector_text, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>c:\documents and settings\gx\my documents\visual studio 2008\projects\vector_text\vector_text\main.cpp(13) : warning C4018: &#39;<&#39; : signed/unsigned mismatch
1>c:\documents and settings\gx\my documents\visual studio 2008\projects\vector_text\vector_text\main.cpp(52) : warning C4018: &#39;<&#39; : signed/unsigned mismatch
1>Linking...
1>LINK : C:\Documents and Settings\GX\My Documents\Visual Studio 2008\Projects\Vector_text\Debug\Vector_text.exe not found or not built by the last incremental link; performing full link
1>Embedding manifest...
1>Build log was saved at "file://c:\Documents and Settings\GX\My Documents\Visual Studio 2008\Projects\Vector_text\Vector_text\Debug\BuildLog.htm"
1>Vector_text - 0 error(s), 2 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

编译过去了,这个报错是怎么回事? 2 Warning是啥意思。怎么让他不报错??问完了。
报错的是这两个
for (int i=0;i<d.size();i++)13行
for (int i=0;i<a.size();i++)   52行

shawind 发表于 2010-12-22 12:16:24

这是开/W3才出现的警告。
vector.size()返回的是无符号整数unsigned int
而你在for中声明的i是有符号的int
改成for(unsigned int i = 0; i&lt;a.size(); i++)就没问题了。

secondsen 发表于 2010-12-22 16:04:22

谢谢谢谢,灰常感谢
页: [1]
查看完整版本: 关于向量的问题