C++ 访问向量

2024-01-10

I have std::vector其中包含我自己的类,我必须访问它的函数和空隙。

class A
{
private: 
     int var;
     vector<string> vec;

public:
     void setVar(int i) { var = i; }
     void setVec(vector<string> a) { vec = a; }
};

我也有返回函数,但我懒得输入它们。我已经包含了所有必要的文件。

int main()
{
    vector<A> vec;
    for (int i = 0; i < 10; i++)
    {
        A tmp;
        tmp.setVar(i);
        vec.push_back(tmp);
    }

    for (int i = 0; i < 10; i++)
    {
        vector<string> tmp;
        tmp.push_back("1");
        tmp.push_back("2");
        tmp.push_back("3");
        vec.at(i).setVec(tmp);  //Works sometimes or causes error std::out_of_range
        vec[i].setVec(tmp);     //Crashes the whole programm
    }
}

那么我该如何设置这些变量呢?vector已初始化?

我正在使用 g++,这不是实际的代码,因为我的实际代码很混乱。

Error for vec.at(i).setVec(tmp);
Error is:  terminate called after throwing an instance of 'std::out_of_range'
  what():  vector::_M_range_check

您使用哪个编译器?我其实很惊讶std::vector<std::string> tmp("1","2","3");甚至可以编译!

老实说,我不知道它叫什么,但我敢打赌它不会做你所期望的,我相信是:

std::vector<std::string> tmp;
tmp.push_back("1");
tmp.push_back("2");
tmp.push_back("3");

作为记录,升压分配 http://www.boost.org/doc/libs/1_45_0/libs/assign/doc/index.html#list_of and C++0x http://en.wikipedia.org/wiki/C%2B%2B0x#Initializer_lists提供您想要实现的容器初始化类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 访问向量 的相关文章

随机推荐