0
int main() {
    int k=0;
    string s;
    cout<<"string ";
    getline(cin,s);
    float n=s.size();


     vector< vector<string> > vec(n>8?floor((sqrt(n))):3,  vector<string>(n>8?ceil((sqrt(n))):3));



    for(int i=0;n>8?i<floor((sqrt(n))):i<3;i++)
    {
        for(int j=0;n>8?j<ceil((sqrt(n))):j<3;j++)
        {
            if(k<s.size())
            {
                vec[i][j]=s[k];
                k++;
            }
        }
    }



        for(int j=0;n>8?j<ceil((sqrt(n))):j<3;j++) 
        {

    {
        for(int i=0;n>8?i<floor((sqrt(n))):i<3;i++)

            cout<<vec[i][j];

    }cout<<" ";
        }

我正在开发一个加密程序,我想制作一个矢量(第一次使用它),其大小应该受用户输入的影响。我该如何实现它?

4

1 回答 1

0

我不确定你到底想做什么,但你可以使用rand()函数来随机化向量的大小。我编写了示例代码,但您应该根据自己的目的对其进行调整。

 int maxSize1 = 10;
int maxSize2 = 15;


std::vector<string> s;
s.push_back("A");
s.push_back("B");
s.push_back("C");
s.push_back("D");



srand(time(NULL));
int size1 = rand() % maxSize1 + 1;
int size2 = rand() % maxSize2 + 1;
std::vector< std::vector<string> > vec(size1, std::vector<string>(size2));

cout << "vector sizes " << size1 << " " << size2 << endl; 

for(int i=0,k = 0;i<size1;i++)
{
    for(int j=0;j<size2;j++)
    {
        if(k < s.size())
        {
            vec[i][j]=s[k];
            k++;
        }

        cout << "" << vec[i][j] << ",";
    }
    cout << "\n";
}
于 2013-10-09T20:43:10.620 回答