注册 登录
编程论坛 C语言论坛

std::vector<std::string>、 array<String^>^、 List<String^>^ 三者

追梦人zmrghy 发布于 2022-12-15 23:19, 1362 次点击
std::vector<std::string>、  array<String^>^、 List<String^>^  三者区别是什么???
只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录


只有本站会员才能查看附件,请 登录



array<String^>^ 初始化后字符串就固定的。不能再添加了!!!
std::vector<std::string>和List<String^>^随时可以添加字符串。。。。
 为什么 std::vector<String^>没有语法错误提示。只要一运行就出 &&  不能在类型 '_Ty' 上使用此间接寻址

好苦恼,就像学生在解题,习题集后面就有答案,
可是学生,就是找不到解出答案的方法。

for(auto i : StrArr1) 、 for each(auto i in StrArr1) 二者区别是什么???

为什么 std::vector<std::string>可以使用for(auto i : V) 而 array<String^>^和 List<String^>^ 只能用 for each(auto i in V)。

理论书籍抽象如天书,理论视频好似催眠曲。
学习一会,不是头昏脑涨,就是昏昏欲睡。

再小的程序,只能看实例代码“照猫画虎”。
语法上改动九牛一毛,寻找实例三天三夜。

第3张图中90行、91行如何写成一行。。。
List<String^>^ StrArr1 = ???如何写。。。。
程序代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
        array<String^>^ StrArr1 = {"123abc", "456def", "789ghi"};
        List<String^>^ StrArr2 = gcnew List<String^>((Generic::IEnumerable<String^>^)StrArr1);
        for each(auto i in StrArr2)
        {
            textBox1->Text += i + "\r\n";            
        }
   


        array<String^>^ StrArr1 = {"123abc", "456def", "789ghi"};
        List<String^>^ StrArr2 = gcnew List<String^>((Generic::IEnumerable<String^>^)StrArr1);


如何合并成一句,  List<String^>^ StrArr1 = ???如何写。。。。
6 回复
#2
追梦人zmrghy2022-12-16 13:04
人呢,为什么,没人回答我的问题。。。。。。
#3
apull2022-12-16 19:11
正如你说的,数组是固定大小,其他2个的大小可变。
vector 是可变数组,内存中连续位置存储。
List 是个链表,内存不连续。
#4
追梦人zmrghy2022-12-17 01:20
以下是引用apull在2022-12-16 19:11:46的发言:

正如你说的,数组是固定大小,其他2个的大小可变。
vector 是可变数组,内存中连续位置存储。
List 是个链表,内存不连续。


小黄人,你好呀!!!
std::vector<std::string>和List<String^>^随时可以添加字符串。。。。
 为什么 std::vector<String^>没有语法错误提示。只要一运行就出 &&  不能在类型 '_Ty' 上使用此间接寻址

for(auto i : StrArr1) 、 for each(auto i in StrArr1) 二者区别是什么???
为什么 std::vector<std::string>可以使用for(auto i : V) 而 array<String^>^和 List<String^>^ 只能用 for each(auto i in V)。

程序代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
        array<String^>^ StrArr1 = {"123abc", "456def", "789ghi"};
        List<String^>^ StrArr2 = gcnew List<String^>((Generic::IEnumerable<String^>^)StrArr1);
        for each(auto i in StrArr2)
        {
            textBox1->Text += i + "\r\n";            
        }
    }
   


array<String^>^ StrArr1 = {"123abc", "456def", "789ghi"};
List<String^>^ StrArr2 = gcnew List<String^>((Generic::IEnumerable<String^>^)StrArr1);

如何:合并成一句,  List<String^>^ StrArr1 = ???如何写。。。。

[此贴子已经被作者于2022-12-17 01:34编辑过]

#5
apull2022-12-17 09:25
你好,c++/CLR不会
G++中这3中都可以用for(auto i : V)遍历。
#6
追梦人zmrghy2022-12-17 20:08
回复 5楼 apull
array<String^>^ StrArr1 = {"123abc", "456def", "789ghi"};
List<String^>^ StrArr2 = gcnew List<String^>((Generic::IEnumerable<String^>^)StrArr1);

如何:合并成一句,  List<String^>^ StrArr1 = ???如何写。。。。


 为什么 std::vector<String^>没有语法错误提示。只要一运行就出 &&  不能在类型 '_Ty' 上使用此间接寻址
#7
apull2022-12-17 21:57
只有本站会员才能查看附件,请 登录
1